2012-04-11 27 views

Trả lời

15

Một giải pháp khả thi sẽ được

  • tính giá trị tuyệt đối của mỗi id nơi bạn trừ ID của bạn.
  • yêu cầu kết quả và giới hạn kết quả thành 5 bản ghi.

Tuyên Bố SQL

SELECT ABS(ID - 9), * 
FROM MyTable 
ORDER BY 
     ABS(ID - 9) 
LIMIT 5 

Sửa(thx để ypercube để chỉ ra một lỗ hổng có thể trong giải pháp này)

Nếu mục đích là để có được 2 id từ bên trái và hai id từ bên phải, câu lệnh có thể được điều chỉnh như sau

SELECT * FROM MyTable WHERE ID <= 9 ORDER BY ID DESC LIMIT 3 
UNION ALL 
SELECT * FROM MyTable WHERE ID > 9 ORDER BY ID ASC LIMIT 2 
+1

simpool và bootifol +1 –

+0

@NiftyDude - Foonny :) –

+1

Tất nhiên bạn có nghĩa là 'ORDER BY ABS (id - @id) 'trong đó' @ id' là id cụ thể ('9' trong ví dụ) –

Các vấn đề liên quan