繁体   English   中英

Sybase 查询自连接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM