SQL - 检查复合键的唯一性

6

请问有人能帮我解决这个问题吗?

我想要检查一些数据是否有效,因此验证的一个小部分包括实体完整性,其中我检查我的主键是否唯一。

SELECT order_id, COUNT(order_id)
FROM temp_order
GROUP BY order_id
HAVING ( COUNT(order_id) > 1 )

在这种情况下,order_id是主键。这个查询很好用。
问题在于:
现在我有另一个表temp_orditem,它有一个由2个字段order_id和product_id组成的复合主键。
如何检查主键是否唯一(即这两个字段的组合)?我可以这样做吗?
SELECT order_id, product_id, COUNT(order_id), COUNT(product_id)
FROM temp_order
GROUP BY order_id, product_id
HAVING ( COUNT(order_id) > 1 AND COUNT(product_id)>1)
2个回答

13
我只会写出这个:
SELECT order_id, product_id, COUNT(*) AS x
FROM temp_order
GROUP BY order_id, product_id
HAVING x > 1

12

你需要的查询语句是:

select order_id, product_id, count(*)
from temp_order
group by order_id, product_id
having count(*) > 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接