sql查询帮助,不知道怎么称呼这个

时间:2017-06-20 03:18:08

标签: sql

我不太确定如何解释这个问题。和我在一起。

我想创建一个查询来检索表中行列中包含x&#s的行(这是一个虚拟表):

row col1 col2 col3 
 x   1    a    c 
 x   2    b    c
 x   3    a    c
     4    b    d
 x   5    f    g

所以我希望我的查询工作的方式是检索col2的值在col3中没有行的所有行,其中值为d。 IE浏览器。价值' a'将被检索,因为它只有col3的c,但值' b'不会被检索,因为它在第4行的col3中有 d

我希望这很容易理解。

聚苯乙烯。一旦我知道如何进行查询,我希望我知道如何标记标题并重做它。 (虽然现在我想到了,也许这个标题最适合所有那些像我一样的人)

2 个答案:

答案 0 :(得分:2)

考虑如何手动执行此操作,并将其放入查询中。

要获得您所写的所有col3值:

SELECT DISTINCT col3 FROM TABLE_NAME

使用它通过not in子句过滤选择中的行:

SELECT 
   col1, col2, col3 FROM TABLE_NAME
WHERE col2 not in (SELECT DISTINCT col3 FROM TABLE_NAME);

答案 1 :(得分:2)

根据您提供的所有内容,我必须做出一些假设。如果没有在表上进行自联接,您可以利用表上的标识键来使用简单的查询:

SELECT * FROM TABLE_NAME
WHERE id NOT IN (SELECT id FROM TABLE_NAME WHERE col3 = 'd');

如果您没有桌面上的身份密钥,您可以执行更多类似的操作:

SELECT * FROM TABLE_NAME
WHERE col2 NOT IN (SELECT col2 FROM TABLE_NAME WHERE col3 = 'd');

这两个查询都将返回关系中所有元组的元组,这些元素的col2元素不在元组中,其中col3包含' d'。