Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एसक्यूएल:एक आईडी दिए गए क्लॉज में अगली पंक्ति खोजें

आपके पास वर्तमान रिकॉर्ड का संदर्भ होना चाहिए, और फिर क्रमबद्ध कॉलम के आधार पर उत्तरोत्तर अगले रिकॉर्ड की तलाश करनी चाहिए। नीचे दिया गया उदाहरण मानता है कि इसे

. पर क्रमबद्ध किया गया है
ORDER BY Active, DIN, NAME

पहला:

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

अगला:(सुनिश्चित करें कि आपने CURR.ID = 6 को अलग कर दिया है और AND-ORs उचित कोष्ठकों के साथ! )

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;

एक कार्यशील नमूना नीचे प्रस्तुत किया गया है

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"

यदि आईडी =6 के साथ वर्तमान पंक्ति है, तो अगले रिकॉर्ड का उपयोग करके पुनः प्राप्त किया जा सकता है

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. नए कॉलम में स्ट्रिंग्स का उपयोग करके SQL समूह

  2. MYSQL - तालिका में प्रत्येक श्रेणी के लिए पहले 4 रिकॉर्ड चुनें

  3. पीडीओ तैयार बयानों के साथ कई पंक्तियों को सम्मिलित करें

  4. आपको स्थिर स्ट्रिंग अक्षर के लिए CONCAT() का उपयोग क्यों नहीं करना चाहिए?

  5. MySQL में सोशल नेटवर्क सिस्टम के लिए डेटाबेस डिजाइन करने के लिए गाइड