在我的表格中,我需要知道每个ID
是否只有一个ID_name
。我怎么写这样的查询?
我试过了:
select ID, count(distinct ID_name) as count_name
from table
group by ID
having count_name > 1
但它需要永远运行。
有什么想法吗?
答案 0 :(得分:2)
select ID
from YourTable
group by
ID
having count(distinct ID_name) > 1
或
select *
from YourTable yt1
where exists
(
select *
from YourTable yt2
where yt1.ID = yt2.ID
and yt1.ID_Name <> yt2.ID_Name
)
现在,大多数ID
列都定义为primary key
并且是唯一的。因此,在常规数据库中,您希望两个查询都返回一个空集。
答案 1 :(得分:0)
从中选择tt.ID,max(tt.myRank) ( 选择ip.ID,ip.ID_name, ROW_Number()over(ip.ID分区,ip.ID分区ip.ID_nameorder)为myRank 来自YourTable ip )tt 按tt.ID分组
这为每个ID提供了ID_Name
的总数如果您只想要那些具有多个名称关联的ID,请添加一个where子句 e.g。
从中选择tt.ID,max(tt.myRank) ( 选择ip.ID,ip.ID_name, ROW_NUMBER()结束(ip.ID分区,ip.ID分区ip.ID_name)作为myRank 来自YourTable ip )tt 其中tt.myRank&gt; 1 强> 按tt.ID分组