Nếu bạn muốn loại trừ các hàng khớp với name
trước đó , có một số cách như sau.
Trường hợp 1:Nếu bạn sử dụng MySQL8, bạn có thể sử dụng LAG chức năng.
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
Trường hợp 2:Nếu id
liên tục mà không có bất kỳ bước nào, bạn sẽ nhận được kết quả mong đợi bằng cách so sánh name
và id
trước đó bởi THAM GIA.
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
Trường hợp 3:Nếu id
s không liên tục, có một cách để lấy id
tối đa không vượt quá id
khác .
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