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

SQL:Tìm hàng tiếp theo trong mệnh đề where được cung cấp một ID

Bạn cần có tham chiếu đến bản ghi hiện tại, sau đó dần dần tìm kiếm bản ghi tiếp theo dựa trên các cột được sắp xếp. Ví dụ dưới đây giả định rằng nó được sắp xếp theo

ORDER BY Active, DIN, NAME

Đầu tiên:

SELECT *
FROM TABLE
WHERE NAME LIKE '%X%' AND DIN LIKE '%%'
ORDER BY Active, DIN, Name
LIMIT 1;

Tiếp theo:( đảm bảo rằng bạn tách CURR.ID = 6 và AND-OR có dấu ngoặc vuông thích hợp! )

SELECT *
FROM TABLE T
INNER JOIN TABLE CURR ON CURR.ID = 6 # the current ID being viewed
   AND ((T.Active = Curr.Active AND T.DIN = Curr.DIN AND T.NAME > Curr.Name)
     OR (T.Active = Curr.Active AND T.DIN > Curr.DIN)
     OR T.Active > Curr.Active)
WHERE T.NAME LIKE '%X%' AND T.DIN LIKE '%%'
ORDER BY T.Active, T.DIN, T.Name
LIMIT 1;

Một mẫu làm việc được trình bày dưới đây

create table products
(ID int, SEED int, NAME varchar(20), DIN varchar(10), ACTIVE int, DELETED int);
insert products values
(1,  0,    'Product #1', '004812', 1,    0),
(2,  0,    'Product #2', '004942', 0,    0),
(3,  0,    'Product #3', '004966', 1,    0),
(4,  0,    'Product #4', '007437', 1,    1),
(5,  2,    'Product #2', '004944', 0,    0),
(6,  2,    'Product #2', '004944', 1,    0);

SELECT *
FROM products
WHERE active = 1 AND deleted = 0
ORDER BY din DESC, ID desc;

Output:
"ID";"SEED";"NAME";"DIN";"ACTIVE";"DELETED"
"3";"0";"Product #3";"004966";"1";"0"
"6";"2";"Product #2";"004944";"1";"0"
"1";"0";"Product #1";"004812";"1";"0"

Nếu hiện tại là hàng có ID =6, bản ghi tiếp theo có thể được truy xuất bằng cách sử dụng

SELECT T.*
FROM products T
INNER JOIN products curr on curr.ID = 6
   AND ((T.din = curr.din and T.ID > curr.ID)
    OR (T.din < curr.din))
WHERE T.active = 1 AND T.deleted = 0
ORDER BY T.din DESC, T.ID ASC
LIMIT 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP - Azure mySQL trong ứng dụng được thay đổi cổng ngẫu nhiên

  2. Cách tốt nhất để Chèn dữ liệu JSON vào MYSQL

  3. Hiệu suất / hiệu quả của 2 câu lệnh SELECT so với UNION so với bất kỳ thứ gì khác trong MySQL-PHP

  4. Làm cách nào để kết nối cơ sở dữ liệu MySql với Firebase?

  5. Bạn có thể tự động tạo tệp mysqldump không thực thi các ràng buộc khóa ngoại không?