Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL:Temukan baris berikutnya dalam klausa where yang diberi ID

Anda harus memiliki referensi ke catatan saat ini, dan kemudian secara bertahap mencari catatan berikutnya berdasarkan kolom yang diurutkan. Contoh di bawah ini mengasumsikan itu diurutkan pada

ORDER BY Active, DIN, NAME

Pertama:

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

Selanjutnya:(pastikan Anda memisahkan CURR.ID = 6 dan DAN-ATAU dengan tanda kurung yang tepat! )

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;

Contoh kerja yang disajikan di bawah ini

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"

Jika saat ini adalah baris dengan ID=6, catatan berikutnya dapat diambil menggunakan

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. Tentukan file konfigurasi MySQL mana yang digunakan

  2. Layanan MySQL hilang

  3. Saldo Debit Kredit Saldo Terbuka MySQL

  4. Hapus gabung dari dua tabel

  5. Bagaimana Cara Memanggil Kode Java dari MySQL?