sql - 检查COMPOSITE密钥的唯一性

时间:2012-04-30 21:49:29

标签: sql primary-key unique composite-primary-key

有人可以帮助我解决这个困难吗?

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

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 个答案:

答案 0 :(得分:11)

我会写这个:

SELECT order_id, product_id, COUNT(*) AS x
FROM temp_order
GROUP BY order_id, product_id
HAVING x > 1

答案 1 :(得分:11)

这是您需要的查询:

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