0

AとBの2つのテーブルがあります

表 A 列:
content_key data_key

表 B 列: content_key person_key

各 data_key に関連付けられている person_key が 1 つだけであることを確認する必要があります。同じ person_key を複数回持つことができますが、一意の値は 1 つだけです。

4

2 に答える 2

0

これを行う良い方法は、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))
于 2012-08-20T19:54:41.953 に答える
0

COUNT()と とGROUP BYdata_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
于 2012-08-20T19:45:21.367 に答える