我想编写一个查询来实现以下功能。我有一个表xyz
,其中在列a中有多个具有相同列值(1)的行。
我想在b列中找不到列a中值为1的行集的特定值。
Table xyz
---------
a b
1 te
1 we
1 re
2 te
2 re
3 ge
4 re
所以基本上我想找出列b是否没有值' te'对于a列中的一组值
当我做的时候
Select a from xyz where b <> 'te'
group by a
我会得到1,2,3 and 4
两个结果。
但我希望结果只包含1和2.请帮忙。
答案 0 :(得分:0)
Select a from xyz where (b<>'te') and ((a=1) or (a=2))
或作为变体
select a from xyz where (b<>'te') and (a in (1, 2))
答案 1 :(得分:0)
我刚才意识到我没有,仍然不明白你在问什么。你能尝试重申一下吗?根据这些数据,我能提出的唯一非平凡的解释是返回1和2:
a
的值是什么,以便a
和a
都有一行 'te'和一行SELECT DISTINCT q1.a FROM (SELECT a FROM xyz WHERE b='te') q1 JOIN (SELECT a FROM xyz WHERE b!='te') q2 ON q1.a=q2.a
和'te'以外的值
在这种情况下,查询将是:
3 and 4
与您的示例中返回1 and 2
或在geo
示例中返回a
相对应的解释将是:
te
行不存在的SELECT DISTINCT a FROM xyz WHERE a NOT IN (SELECT a FROM xyx WHERE b='te')
的值是什么?
在这种情况下,查询将是:
{{1}}
如图所示here(sqlfiddle正在起作用,所以我使用了ideone)
答案 2 :(得分:0)
select a from xyz
where b! = 'tz' and
a in (select a from xyz where b = 'tz')
这是你在找什么?
答案 3 :(得分:0)
试试这个:
Select a from xyz where b = 'te'
group by a