だるろぐ

だるいぶろぐです

重複した値を持つレコードを抽出しよう

videosテーブルがreserve_idってカラムを持っている。
このテーブルから、重複したreserve_idを持っているレコードを抽出したかった。


俺の場合。

select id,reserve_id from videos where reserve_id in
 (select reserve_id from videos group by reserve_id having count(*) > 1)
 order by reserve_id desc, id desc;

望んだものは得られたけど遅い。


某氏の場合。twitterで教えてもらった。

select id,reserve_id from videos as v where exists
 (select 1 from videos where reserve_id = v.reserve_id and id != v.id);

望んだものが得られる上に俺のより100倍くらい早い。感謝。


何してるか分かんないけど眠いから理解はまた今度!