显示两个表中的不同数据

时间:2014-01-20 19:27:52

标签: mysql sql sql-server

我有2张桌子;他们每个人都有一个名为“颜色”的列。

第一个表格中的颜色是:

  • 绿色
  • 红色

第二个表格中的颜色是:

  • 绿色

我想要一个返回“Red”的查询,因为它不在两个表中。我试过这个:

select color
from tb1_color a 
join tb2_color b
on a.color = b.color

我找不到合适的加入......

3 个答案:

答案 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运算符。