SQLで重複を排除する
2つの選択肢がある
DISTINCT句を使う
SQLのGROUP BYを使う
基本的に前者で済むなら、前者を使えば良いと思うmrsekut.icon
DISTINCT句を使った例
↑に書いた
SQLのGROUP BYを使った例
WIP
両者でじゃっかん責務が異なると思う
DISTINCT句は元来重複を省くためのモノ
SQLのGROUP BYはカットと集約を同時にするもの
使い方を工夫することで重複を省くことができる
GROUP BYの方が能力が高いので常にコレを使っていればDISTINCTは使わずに済む
が、適切な抽象度の道具を使って意図を明示する方が良いので、DISTINCTで済むならこれを使うべきだと思う
敢えてGROUP BYを使うとしたら、そちらのほうがパフォーマンスが良い、とか
#??
実際パフォーマンス観点でどっちのほうが良いのか?
SQLで重複あるもののみを取得する
↓nameが重複するのもののみを取得
code:sql
SELECT
id
,name
,COUNT(name)
FROM hoge
GROUP BY
name
HAVING
COUNT(name) > 1
https://qiita.com/masniimura/items/7ac62b37f6b42c4e17bc
https://norm-nois.com/blog/archives/1293