mysqlを使ったデータベースで
同様の内容、値が重複しているレコードを抽出した場合
どういったSELECT文を書けばいいのでしょうか?
たくさん参考になることを記載しているページはすぐ見つかりますが
集計関数の結果を条件とした絞込みという
select文にあまりなれていなかったので
ハマった部分の開設を兼ねて整理しました。
例
テーブルAに同様のタイトルが入っているレコードを抽出したい場合。
セレクト文
SELECT タイトルFROM テーブルA
GROUP BY タイトル HAVING COUNT(タイトル) > 1
解説
このSELECT文は「集計関数の結果を条件とした絞込み」を得る方法で
集計関数とは
集計関数は表から取り出したデータを集計する機能を持っています。集計関数には次のような関数が用意されています。
COUNT | 行数 |
AVG | 平均 |
SUM | 合計 |
MAX | 最大値 |
MIN | 最小値 |
集計関数の使い方
例として合計を求めるSUMを使ったSELECT文。1.特定の顧客(顧客ID:152)が支払った合計の金額を求めています。
SELECT SUM(TotalDue) 支払合計額 FROM 注文
WHERE CustomerID = 152
2.売上が1000以上の商品IDを抽出セレクト文
SELECT 商品ID, SUM(値段)
FROM 商品マスタ
GROUP BY 商品ID HAVING SUM(値段)>1000