如何为不在列2中的列1选择SQL

如何为不在列2中的列1选择SQL,sql,Sql,我有一张有四列的桌子。第一列ID1在ID2中有一个类似的行。我喜欢选择一个查询来获取ID2中的所有行,除了相同的记录。例如: ID1 Name1 ID2 Name2 ------------------- 01 A 01 A 01 A 02 B 01 A 03 C 03 C 03 C 03 C 01 A 03 C 04 G 从ID2 ID1所在的表中选择ID2,名称2 输出应为: ID2, Name2 ----------

我有一张有四列的桌子。第一列ID1在ID2中有一个类似的行。我喜欢选择一个查询来获取ID2中的所有行,除了相同的记录。例如:

ID1 Name1 ID2 Name2
-------------------
01  A     01  A
01  A     02  B
01  A     03  C
03  C     03  C
03  C     01  A
03  C     04  G
从ID2 ID1所在的表中选择ID2,名称2

输出应为:

ID2, Name2
----------
02   B
03   C
01   A
04   G
03/C和01 A必须在这里。 如果我使用distinct,那么它将排除ID1的所有相同记录,我不想这样做。我正在使用经典ASP在选择选项列表中选择ID1组。如果选择01,则会出现ID2的选择选项列表。我只想看到ID1中没有的所有ID2

有人能帮我吗?
谢谢。

我想你希望
不存在。但是您的结果集似乎与问题的描述不匹配

select id2, name2
from t
where not exists (select 1
                  from t t2
                  where t2.id1 = t.id2 and t2.name1 = t.name2
                 );
试试“独特的”

Select distinct ID2, Name2 From table where ID2 <> ID1
从ID2 ID1所在的表中选择distinct ID2,Name2

我认为不需要解释:

select id2, name2
from t
where (id1 <> id2) OR (name1 <> name2)
选择id2,名称2
从t
其中(id1 id2)或(名称1 name2)

您的问题并不完全清楚,假设
ID1
不能等于
ID2
并且
name1
可以等于
name2
,正确的答案是:

SELECT DISTINCT ID2, Name2 FROM tableName WHERE ID2 <> ID1
这将有助于:

select ID2,Name2 from tablename where ID1!=ID2 and Name1!=Name2

为什么03/C和01/A在结果集中?因为03/C和01/A是ID1的另一组。如果我使用distinct,那么它将排除ID1的所有相同记录,我不想这样做。我正在使用经典ASP在选择选项列表中选择ID1组。如果选择01,则会出现ID2的选择选项列表。我只想看到ID1中没有的所有ID2。谢谢。@JennyTran如果您所问的下面的答案解算器给它一个绿色的勾号,可能还有一个向上投票。它根本没有返回任何记录。据我所知,这个问题的答案对于当前的表内容和指定的输出来说已经足够好了,但是如果
name1!=name2
id1=id2
您的查询将打印此记录,但它不应该打印。应该有
而不是
@ArielGrabijas,除了相同的记录而不是相同的id。我在帖子中添加了解释和图片。谢谢
select ID2,Name2 from tablename where ID1!=ID2 and Name1!=Name2