sql - 检查COMPOSITE密钥的唯一性

tes*_*est 6 sql unique primary-key composite-primary-key

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

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

SELECT order_id, COUNT(order_id)
FROM temp_order
GROUP BY order_id
HAVING ( COUNT(order_id) > 1 )
Run Code Online (Sandbox Code Playgroud)

在这种情况下,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)
Run Code Online (Sandbox Code Playgroud)

Ja͢*_*͢ck 12

我会写这个:

SELECT order_id, product_id, COUNT(*) AS x
FROM temp_order
GROUP BY order_id, product_id
HAVING x > 1
Run Code Online (Sandbox Code Playgroud)


Cha*_*had 12

这是您需要的查询:

select order_id, product_id, count(*)
from temp_order
group by order_id, product_id
having count(*) > 1
Run Code Online (Sandbox Code Playgroud)