我在SQL中有2个表,如下所示,需要对数据运行一些测试查询。这些表包含一些示例数据:
Table A
ID groupName value
id2000 groupA 1
id2000 groupA 2
id2000 groupA 3
id3000 groupB 1
id3000 groupB 2
Table B
ID groupNameB valueB
id2000 groupA 1
id2000 groupA 2
id2000 groupA -9
id3000 groupB 1
id3000 groupB -9
表格相似,但实际上是不同的(它们有不同的数据,我只是缩短了堆栈溢出)。
我需要的是加入两者的一年,但是给出了表A中但不在表B中的值。
因此,使用上面的数据,我得到一个结果集:
id2000 groupA 3
id3000 groupB 2
我想它就像一个NOT UNION?
答案 0 :(得分:1)
您想使用EXCEPT。
它从第一个查询中删除也在第二个查询中的行。它不返回query2中不在query1中的行。
select id, groupName, value
from tableA
except
select id, groupNameB, valueB
from tableB
答案 1 :(得分:1)
select a.ID, a.groupName, a.Value
from [Table A] a
left join [Table B] b
on a.ID = b.ID
and a.groupName = b.groupNameB
and a.Value = b.ValueB
where b.ID is null
答案 2 :(得分:1)
如果我理解正确,这将有效。至少它与我的样本数据有关。
select Id, groupName, value
FROM tableA
EXCEPT
select Id, groupName, value
FROM tableB