特定の列に重複があるかどうかを確認するクエリを書いています。
SELECT COUNT(thecol) FROM thetable WHERE thecol IS NOT NULL GROUP BY thecol
HAVING COUNT(*) > 1
それは私に次のような出力を与えます
3
5
6
もちろん、colが一意ではないthecolの各値のレコード数はどれですか。
どうすれば合計14だけを取得できますか?既存のクエリをサブクエリとして使用する必要がありますか?
これはあなたが望むことをしますか?
SELECT SUM(x.records)
FROM
(
SELECT COUNT(thecol) AS records
FROM thetable
WHERE thecol IS NOT NULL
GROUP BY thecol
HAVING COUNT(*) > 1
) AS x
テーブルに別の列があることを必要とする別の方法(PRIMARY KEY
またはUNIQUE NOT NULL
制約)。それをid
と呼びましょう:
SELECT COUNT(*)
FROM thetable AS t
WHERE EXISTS
( SELECT 1
FROM thetable AS t2
WHERE t2.thecol = t.thecol
AND t2.id <> t.id
) ;