我有一张包含当前值的表格:
我想要的是获取projekt
值,其中kod为Greger
和Åutte
。
截至目前,我的尝试什么都没有。由于条件跨越两行,我不知道如何获得我需要的projekt
。
想要的结果如下:
我在这里要求魔法可能有点粗鲁,但我目前没有魔法点。
如何在条件跨越两行的情况下获取列值?
答案 0 :(得分:1)
类似的东西怎么样?
select
distinct projekt
from myTable
where kod in ('Greger','Åutte')
group by projekt
having count(projekt) > 1
答案 1 :(得分:1)
使用此:
SELECT a.projekt
FROM myTable a
WHERE EXISTS (
SELECT b.projekt
FROM myTable b
WHERE b.projekt=a.projekt AND kod='Greger'
) AND EXISTS (
SELECT c.projekt
FROM myTable c
WHERE c.projekt=a.projekt AND kod='Åutte'
)
另一种方法是计算匹配记录,但您必须确保计算DISTINCT值的值:
SELECT projekt
FROM myTable
WHERE kod IN ('Greger','Åutte')
GROUP BY projekt
HAVING COUNT(DISTINCT kod)=2
如果您知道(projekt,kod)是myTable的UNIQUE或PRIMARY键,这可以简化:
SELECT projekt
FROM myTable
WHERE kod IN ('Greger','Åutte')
GROUP BY projekt
HAVING COUNT(*)=2
在所有情况下,如果此表很大,最好确保您有(projekt,kod)索引;)
答案 2 :(得分:0)
将语句更改为
Select * from myTable where kod = 'Greger' OR kod = 'Åutte'
或在
中Select * from myTable where kod in ('Greger', 'Åutte')
答案 3 :(得分:0)
使用OR而不是AND
SELECT * FROM myTable WHERE kod = 'Greger' OR kod='Autte'
你的实际陈述要求一行,其中kod是Greger并且每行都是autte,这是不可能的,因为只有一个kod列。
如果您考虑为一列提供更多棕褐色条件。其他答案中建议的IN子句可能是一个很好的解决方案,因为它减少了语句的大量冗长。
答案 4 :(得分:0)
使用in
select projekt from myTable where kod in ('Greger','Åutte');
答案 5 :(得分:0)
看起来您正在使用SQL Server,因此您可以使用intersect
关键字,如下所示:
select * from tbl where projekt in
(select projekt from tbl where kod = 'Greger'
intersect
select projekt from tbl where kod = 'Åutte')
Intersect
将返回所有具有两个条目行的项目。然后,您可以根据子查询的结果选择表中的所有列。
答案 6 :(得分:0)
有多种可能性
SELECT DISTINCT projekt FROM users
WHERE kod IN('Greger','Åutte')
OR
SELECT DISTINCT projekt FROM users
WHERE kod = 'Greger' OR kod = 'Åutte'
答案 7 :(得分:-1)
使用OR,如果这两个条件中的一个可用,则允许选择:
SELECT * FROM myTable WHEREkod = 'GREGER' OR kod='AUTTE'