说我有这张桌子:
id | name
-------------
1 | john
2 | steve
3 | steve
4 | john
5 | steve
我只想要与前一行相比唯一的行,这些:
id | name
-------------
1 | john
2 | steve
4 | john
5 | steve
我可以通过使用此查询部分实现此目的:
SELECT *, (
SELECT `name` FROM demotable WHERE id=t.id-1
) AS prevName FROM demotable AS t GROUP BY prevName ORDER BY id ASC
但是当我使用带有多个UNION和东西的查询时,这变得复杂了。有没有一种简单的方法可以做到这一点(比如GROUP BY,但不是更具体)?
答案 0 :(得分:2)
这应该有用,但我不知道它是否更简单:
select demotable.*
from demotable
left join demotable as prev on prev.id = demotable.id - 1
where demotable.name != prev.name