1

我想写一个查询来实现以下。我有一个表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列是否没有a列中一组值的值'te'

当我做

Select a from xyz where b <> 'te'
group by a

我会得到1,2,3 and 4两个结果。

但我希望结果应该只包含 1 和 2。请帮忙。

4

4 回答 4

0

我刚刚意识到我没有而且仍然不明白你在问什么。你能试着重述一下吗?我能想出的唯一重要的解释是,根据这些数据返回 1 和 2 是:

a这样a的值是a多少

在这种情况下,查询将是:

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

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')

如此处所示(sqlfiddle正在发挥作用,所以我使用了ideone)

于 2013-07-17T13:39:16.173 回答
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))
于 2013-07-17T13:35:32.060 回答
0
select a from xyz
where b! = 'tz' and 
a in (select a from xyz where b = 'tz')

这是你想要的?

于 2013-07-17T13:50:57.457 回答
0

试试这个:

Select a from xyz where b = 'te'
group by a
于 2013-07-18T13:28:11.487 回答