簡體   English   中英

sql驗證兩個表之間的關系

[英]sql verify relationship over two tables

我有兩個表:A和B

表A列:
content_key data_key

表B列:content_key person_key

我需要驗證,對於每個data_key,只有一個與之關聯的person_key,它可以多次具有相同的person_key,但只有一個唯一值。

您應該能夠使用COUNT()GROUP BY data_keyperson_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

一個好的方法是使用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

我添加了訂單,因此您可以先看到重復的訂單。

好吧,由於您要驗證而不是查看重復項,因此添加一個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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM