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

वर्तमान आइटम आईडी के आसपास N पिछला और M अगला आइटम चुनें

एक बार आपके पास year हो जाए और comm_count id=7 के साथ चयनित पंक्ति के लिए मान, आप दो सरल प्रश्न कर सकते हैं:

SELECT * FROM photo 
WHERE year > 2017 AND (comm_count = 1 AND year <= 2022 OR comm_count < 1) 
ORDER BY comm_count DESC, year DESC LIMIT 3 OFFSET 1
+----+------+------------+
| id | year | comm_count |
+----+------+------------+
|  6 | 2021 |          1 |
|  4 | 2019 |          1 |
+----+------+------------+

SELECT * FROM photo 
WHERE year > 2017 AND (comm_count = 1 AND year >= 2022 OR comm_count > 1) 
ORDER BY comm_count ASC, year ASC LIMIT 3 OFFSET 1;
+----+------+------------+
| id | year | comm_count |
+----+------+------------+
|  3 | 2018 |          7 |
|  5 | 2020 |          9 |
+----+------+------------+

यदि आप MySQL 8.0 का उपयोग करते हैं, तो आप LAG() और LEAD() फ़ंक्शन

SELECT id, year, 
  LAG(id, 1) OVER w AS next,
  LAG(id, 2) OVER w AS next_next,
  LEAD(id, 1) OVER w AS prev,
  LEAD(id, 2) OVER w AS prev_prev
FROM photo 
WHERE year > 2017
WINDOW w AS (ORDER BY comm_count DESC, year DESC)

+----+------+------+-----------+------+-----------+
| id | year | next | next_next | prev | prev_prev |
+----+------+------+-----------+------+-----------+
|  5 | 2020 | NULL |      NULL |    3 |         7 |
|  3 | 2018 |    5 |      NULL |    7 |         6 |
|  7 | 2022 |    3 |         5 |    6 |         4 |
|  6 | 2021 |    7 |         3 |    4 |      NULL |
|  4 | 2019 |    6 |         7 | NULL |      NULL |
+----+------+------+-----------+------+-----------+



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीडीओ मूल्य वृद्धि पीएचपी, मैसकल

  2. ग्रुप बाय से पहले MySQL ऑर्डर

  3. Java.sql.SQLException को कैसे ठीक करें:कॉलम 'आईडी' नहीं मिला। स्प्रिंग बूट में त्रुटि

  4. MySQL ड्रॉप अद्वितीय बाधा

  5. कमांड लाइन के माध्यम से विंडोज़ पर mysqldump का उपयोग करके SQL फ़ाइल कैसे आयात करें