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)
4

2 回答 2

12

我只想写这个:

SELECT order_id, product_id, COUNT(*) AS x
FROM temp_order
GROUP BY order_id, product_id
HAVING x > 1
于 2012-04-30T21:53:50.137 回答
12

这是您需要的查询:

select order_id, product_id, count(*)
from temp_order
group by order_id, product_id
having count(*) > 1
于 2012-04-30T21:53:55.333 回答