Jika Anda ingin mengecualikan baris yang cocok dengan name
sebelumnya , ada beberapa cara seperti berikut ini.
Kasus 1:Jika Anda menggunakan MySQL8, Anda dapat menggunakan LAG fungsi.
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
Kasus 2:Jika id
s terus menerus tanpa langkah apa pun, Anda akan mendapatkan hasil yang diharapkan dengan membandingkan name
dan id
sebelumnya oleh GABUNG.
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
Kasus 3:Jika id
s tidak kontinu, ada cara untuk mendapatkan id
yang maksimal yang tidak melebihi id
lainnya .
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