我正在尝试确定Oracle中表上的一组三列是否构成唯一键,并且可以以1:1的关系使用。
如果我运行此查询,并且密钥是唯一的组合,我不应该看到count
> 1,对吗?
select count(*) from my_table t
group by t.a, t.b, t.c
有没有更好/替代的方法来做出这个决定?
答案 0 :(得分:12)
使用HAVING
子句轻松识别重复项。
select t.a, t.b, t.c, count(1)
from my_table t
group by t.a, t.b, t.c
having count(1) > 1;
答案 1 :(得分:0)
如果表格中包含大量数据,则可能更容易
SELECT t.a, t.b, t.c, count(*)
FROM my_table t
GROUP BY t.a, t.b, t.c
HAVING COUNT(*) > 1
如果该查询返回0行,则这三列(当前)是唯一的。如果该查询返回1行或更多行,您将知道哪些值是重复的。
当然,如果您发现这三列当前是唯一的,那么如果您打算利用这一事实,则需要创建一个唯一约束。