Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách chọn một mục, một mục bên dưới và một mục ở trên trong MYSQL

Đây là một cách khác để làm điều đó bằng cách sử dụng UNION S. Tôi nghĩ câu này dễ hiểu và linh hoạt hơn một chút so với câu trả lời được chấp nhận. Lưu ý rằng ví dụ giả định id là trường duy nhất, có vẻ là trường hợp dựa trên câu hỏi của bạn.

Truy vấn SQL bên dưới giả định bảng của bạn được gọi là demo và có một id duy nhất và bảng đã được điền các giá trị bạn đã liệt kê trong câu hỏi của mình.

( SELECT id FROM demo WHERE STRCMP ( 'd01', id ) > 0 ORDER BY id DESC LIMIT 1 )
UNION ( SELECT id FROM demo WHERE id = 'd01' ORDER BY id ) UNION 
( SELECT id FROM demo WHERE STRCMP ( 'd01', id ) < 0 ORDER BY id ASC LIMIT 1 ) 
ORDER BY id

Nó tạo ra kết quả sau:b03, d01, d02 .

Giải pháp này linh hoạt vì bạn có thể thay đổi từng LIMIT 1 câu lệnh cho LIMIT N ở đâu N là bất kỳ số nào. Bằng cách đó, bạn có thể lấy 3 hàng trước và 6 hàng sau chẳng hạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để tạo ma trận động trong php?

  2. Cách tạo trường mới trong bảng khi người dùng nhấp vào liên kết

  3. Truy vấn khôi phục MySQL

  4. Xóa các bản sao khỏi một bảng lớn

  5. Tại sao MySQL không sử dụng một chỉ mục để so sánh lớn hơn?