यदि आप उन पंक्तियों को बाहर करना चाहते हैं जो पिछले 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