我有2张桌子;他们每个人都有一个名为“颜色”的列。
第一个表格中的颜色是:
第二个表格中的颜色是:
我想要一个返回“Red”的查询,因为它不在两个表中。我试过这个:
select color
from tb1_color a
join tb2_color b
on a.color = b.color
我找不到合适的加入......
答案 0 :(得分:0)
如果您使用的是SQL Server,则可以使用FULL JOIN
:
SELECT ISNULL(T1.Color,T2.Color)
FROM Table1 T1
FULL JOIN Table2 T2
ON T1.Color = T2.Color
WHERE T1.Color IS NULL OR T2.Color IS NULL
答案 1 :(得分:0)
不确定我是否完全理解这个问题。以下查询返回表1中不在表2中的所有记录。您可以使用表2中不在表1中的所有记录来获取UNION。
SELECT color FROM tb1_color tb1 WHERE tb1.color NOT IN (SELECT color FROM tb2_color)
SELECT color FROM tb1_color tb1 WHERE tb1.color NOT IN (SELECT color FROM tb2_color)
UNION ALL
SELECT color FROM tb2_color tb2 WHERE tb2.color NOT IN (SELECT color FROM tb1_color)
这会返回您要找的内容吗?
答案 2 :(得分:0)
此查询获取T1中不在T2中的所有颜色:
select color from T1 except select color from T2
此查询获取T2中不在T1中的所有颜色:
select color from T2 except select color from T1
如果您使用这两个查询的并集,您将获得两个表中都没有的所有颜色:
select color from T1 except select color from T2
union
(select color from T2 except select color from T1)
UNION和EXCEPT是标准的SQL运算符。