sql查询帮助,don';我不知道怎么称呼这个

sql查询帮助,don';我不知道怎么称呼这个,sql,Sql,我不太确定这个问题怎么称呼。跟我在一起 我想创建一个查询来检索表中行列中带有x的行(这是一个虚拟表): 因此,我希望我的查询工作的方式是检索col2的值在col3中没有值为d的行的所有行。即,将检索值“a”,因为它只有col3的c,但不会检索值“b”,因为它在下面第4行的col3中有一个d 我希望这很容易理解 注:一旦我知道如何进行查询,我希望我会知道如何措辞的标题,并将重做它。(虽然现在我在想,也许这个标题最适合所有像我这样有问题的人)想想你可以如何手动完成这项工作,并将其放入你的查询中 要获

我不太确定这个问题怎么称呼。跟我在一起

我想创建一个查询来检索表中行列中带有x的行(这是一个虚拟表):

因此,我希望我的查询工作的方式是检索col2的值在col3中没有值为d的行的所有行。即,将检索值“a”,因为它只有col3的c,但不会检索值“b”,因为它在下面第4行的col3中有一个d

我希望这很容易理解


注:一旦我知道如何进行查询,我希望我会知道如何措辞的标题,并将重做它。(虽然现在我在想,也许这个标题最适合所有像我这样有问题的人)

想想你可以如何手动完成这项工作,并将其放入你的查询中

要获取所有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);

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

要获取所有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);

根据你提供的一切,我得做一些假设。除了在表上进行自连接之外,您还可以利用表上的标识键使用简单的查询:

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元素的所有元组,而col2元素不在col3包含“d”的元组中。

基于您提供的所有内容,我必须做出一些假设。除了在表上进行自连接之外,您还可以利用表上的标识键使用简单的查询:

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”的元组中。

这是有意义的。非常感谢。这很有道理。非常感谢。这很有道理。谢谢。如果可以的话,我会接受这两个答案。不用担心,@finnmaunsel。这是有道理的。谢谢。如果可以的话,我会接受两个答案。别担心,@FinnMaunsell。