[英]Sybase query self-join
我有下表存储 ID 和每个 ID 工作的部门。 (一个ID可以适用于多个部门。我想找到只适用于一个部门的ID。
create table tempdb..dept (ID int, Dept varchar(10))
go
insert into tempdb..dept (ID, Dept) values (1, "HR")
insert into tempdb..dept (ID, Dept) values (2, "HR")
insert into tempdb..dept (ID, Dept) values (3, "HR")
insert into tempdb..dept (ID, Dept) values (4, "HR")
insert into tempdb..dept (ID, Dept) values (1, "Finance")
insert into tempdb..dept (ID, Dept) values (5, "Finance")
insert into tempdb..dept (ID, Dept) values (6, "Finance")
insert into tempdb..dept (ID, Dept) values (4, "Finance")
insert into tempdb..dept (ID, Dept) values (1, "IT")
insert into tempdb..dept (ID, Dept) values (7, "IT")
insert into tempdb..dept (ID, Dept) values (8, "IT")
insert into tempdb..dept (ID, Dept) values (4, "IT")
go
所需的 output:
ID Dept
2 HR
3 HR
5 Finance
6 Finance
7 IT
7 IT
您可以尝试HAVING
count 从表中获取非重复 ID,然后使用自连接
SELECT t2.*
FROM (
SELECT ID
FROM tempdb..dept
GROUP BY ID
HAVING COUNT(*) = 1
) t1 INNER JOIN tempdb..dept t2
ON t1.ID = t2.ID
您可以尝试使用相关子查询的另一种方法
SELECT t2.*
FROM tempdb..dept t2
ON t1.ID = t2.ID
WHERE EXISTS (
SELECT 1
FROM tempdb..dept tt
WHERE t2.ID = tt.ID
GROUP BY tt.ID
HAVING COUNT(*) = 1
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.