从特定列值的行组中选择一行

时间:2013-07-17 13:27:49

标签: sql select

我想编写一个查询来实现以下功能。我有一个表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.请帮忙。

4 个答案:

答案 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的值是什么,以便aa都有一行   '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