折叠SQL行

时间:2011-03-06 11:23:27

标签: sql group-by procedure collapse

说我有这张桌子:

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,但不是更具体)?

1 个答案:

答案 0 :(得分:2)

这应该有用,但我不知道它是否更简单:

select demotable.*
from demotable
left join demotable as prev on prev.id = demotable.id - 1
where demotable.name != prev.name