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

केवल तभी चुनें जब भिन्न मान

यदि आप उन पंक्तियों को बाहर करना चाहते हैं जो पिछले name से मेल खाती हैं , निम्न जैसे कई तरीके हैं।

केस 1:यदि आप MySQL8 का उपयोग करते हैं, तो आप LAG समारोह।

SELECT t1.id,t1.name,t1.price FROM (
  SELECT t2.id,t2.name,t2.price,
    LAG(t2.name) OVER(ORDER BY t2.id) prev
  FROM mytable t2
) t1
WHERE t1.prev IS NULL OR t1.name<>t1.prev
ORDER BY 1

केस 2:यदि id s बिना किसी चरण के निरंतर हैं, आप name . की तुलना करके अपेक्षित परिणाम प्राप्त करेंगे और पिछला id जॉइन करके।

SELECT t1.id,t1.name,t1.price FROM mytable t1
  LEFT JOIN mytable t2
  ON t1.name=t2.name AND
     t1.id=t2.id-1
WHERE t1.id=1 OR t2.id IS NOT NULL
ORDER BY 1

केस 3:यदि id s निरंतर नहीं हैं, अधिकतम id प्राप्त करने का एक तरीका है जो अन्य id . से अधिक न हो ।

SELECT t1.id,t1.name,t1.price FROM mytable t1
  LEFT JOIN mytable t2
  ON t1.name=t2.name AND
     t1.id=(SELECT MAX(t3.id) FROM mytable t3 WHERE t3.id<t2.id)
WHERE t1.id=1 OR t2.id IS NOT NULL
ORDER BY 1

DB Fiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL 8 पासवर्ड के साथ नया उपयोगकर्ता बनाएं जो काम नहीं कर रहा है

  2. पीडीओ ने वाइल्डकार्ड के साथ बयान तैयार किए

  3. खाली mysql उदाहरण पर तरल पदार्थ के साथ डेटाबेस बनाएं

  4. फ़ील्ड सूची में अज्ञात कॉलम। पीएचपी + माइस्क्ल

  5. अद्वितीय यादृच्छिक अल्फ़ान्यूमेरिक वर्ण उत्पन्न करें जो 7 वर्ण लंबे हों