2

私がこのテーブルを持っているとしましょう:

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のようですが、より具体的です)?

4

1 に答える 1

2

これはうまくいくはずですが、もっと簡単かどうかはわかりません:

select demotable.*
from demotable
left join demotable as prev on prev.id = demotable.id - 1
where demotable.name != prev.name
于 2011-03-06T11:28:03.173 に答える