我有两个表,t1 和 t2,具有相同的列(id、desc)和数据。但其中一列 desc 对于同一主键 id 可能具有不同的数据。
我想从这两个表中选择所有这些行,使得 t1.desc != t2.desc
select a.id, b.desc
FROM (SELECT * FROM t1 AS a
UNION ALL
SELECT * FROM t2 AS b)
WHERE a.desc != b.desc
例如,如果 t1 有 (1,'aaa') 和 (2,'bbb') 并且 t2 有(1,'aaa') 和 (2,'bbb1') 那么新表应该有 (2 ,'bbb') 和 (2,'bbb1')
但是,这似乎不起作用。请让我知道哪里出了问题以及正确的方法是什么。
最佳答案
Union
不会比较数据。您需要在此处Join
SELECT *
FROM t1 AS a
inner join t2 AS b
on a.id =b.id
and a.desc != b.desc
关于sql - 将 where 子句与 Union 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35076958/