AとBの2つのテーブルがあります
表 A 列:
content_key data_key
表 B 列: content_key person_key
各 data_key に関連付けられている person_key が 1 つだけであることを確認する必要があります。同じ person_key を複数回持つことができますが、一意の値は 1 つだけです。
AとBの2つのテーブルがあります
表 A 列:
content_key data_key
表 B 列: content_key person_key
各 data_key に関連付けられている person_key が 1 つだけであることを確認する必要があります。同じ person_key を複数回持つことができますが、一意の値は 1 つだけです。
これを行う良い方法は、COUNT(DISTINCT) を使用することです。
select A.data_key, count(distinct person_key) as numPersons
from A join
B
on A.content_key = B.content_key
group by A.data_key
order by 2 desc
order by を追加したので、最初に重複を確認できます。
重複を確認するのではなく確認したいので、HAVING 句を追加します。
having count(distinct person_key) > 1
クエリが行を返さない場合、データは条件を満たしています。
また、これは person_key が決して NULL ではないことを前提としています。それが発生する可能性がある場合、カウントはもう少し複雑です。
(COUNT(distinct person_key) + max(case when person_key is null then 1 else 0 end))
COUNT()
と とGROUP BY
をdata_key
使用できるはずですperson_key
SELECT count(data_key) cnt, data_key, person_key
FROM tableA a
INNER JOIN tableB b
ON a.content_key = b.content_key
GROUP BY data_key, person_key