繁体   English   中英

SQL select ID,其中其他列相同

[英]SQL select id where other columns are identical

如果我有一个包含所有者,wallColor和roofColor列的属性表(假设一个所有者可以拥有多个房屋,但是房屋只能拥有一个所有者),那么我该如何选择所有仅拥有具有相同墙壁和屋顶颜色的房屋的所有者?

所以如果我有

owner   wallColor  roofColor
Bob     Red        Green
Bob     Blue       Blue
Greg    Yellow     Yellow
Greg    Black      Black

它应该只返回Greg,因为Bob的房子有红色的墙壁和绿色的屋顶。

SELECT DISTINCT owner 
FROM ytable 
WHERE owner NOT IN 
(
    SELECT owner 
    FROM ytable 
    WHERE wallColor <> roofColor
)
 SELECT DISTINCT t1.owner
 FROM tablename t1
 WHERE t1.owner NOT IN
 (
    SELECT DISTINCT t2.owner FROM tablename t2
    WHERE t2.wallColor != t2.roofColor
 )

从...那里选择显着的所有者wallcolor = roofcolor除了...在...那里选择[DISTINCT]拥有者wallcolor <> roofcolor;

:-)

SELECT DISTINCT owner FROM table WHERE wallColor=roofColor AND 
owner NOT IN ( SELECT DISTINCT owner FROM table WHERE wallColor<>roofColor )

那将是我的方法,但可能需要进行一些调整。

使用exists运算符:

select *
from table t
where not exists(
    select 1
    from table t1
    where t1.owner = t.owner and t1.wallColor <> t1.roofColor
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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