我在MySQL数据库中有两个相同的死简单表,它们具有不同的数据。我需要一个查询,它将返回所有不重复的结果。
以下是一个例子:
表1。(列“项目”)
a
b
c
d
表2。(列“项目”)
a
b
e
f
x
通缉结果
c
d
e
f
x
答案 0 :(得分:4)
试试这个 -
SELECT * FROM TABLE1 WHERE ITEM NOT IN (SELECT ITEM FROM TABLE2)
UNION
SELECT * FROM TABLE2 WHERE ITEM NOT IN (SELECT ITEM FROM TABLE1)
答案 1 :(得分:0)
SELECT * FROM TABLE1 WHERE ITEM NOT IN (SELECT ITEM FROM TABLE2)
union
SELECT * FROM TABLE2 WHERE ITEM NOT IN (SELECT ITEM FROM TABLE1)
或者另一种方法是使用内部联接来获取所有重复数据,然后提取不在重复数据集中的所有数据。
SELECT * into #temptable FROM TABLE1 INNER JOIN TABLE2 on table2.x = table1.x
union
SELECT * into #temptable FROM TABLE2 INNER JOIN TABLE1 on table2.x = table1.x
SELECT * FROM Table1 WHERE NOT IN (SELECT * FROM #temptable)
UNION
SELECT * FROM Table2 WHERE NOT IN (SELECT * FROM #temptable)
答案 2 :(得分:0)
您可以使用NOT EXISTS
,例如:
SELECT item
FROM table1 t1
WHERE NOT EXISTS (
SELECT item FROM table2 WHERE item = t1.item
);
答案 3 :(得分:0)
我们可以使用不同的联合ALL加入他们。数数和拥有。
因为我们关心整套的独特性,所以需要区别。
SELECT item FROM (
SELECT distinct item
FROM tbl1
UNION ALL
SELECT distinct item
FROM tbl2) B
GROUP BY item
HAVING count(*) =1
答案 4 :(得分:0)
很像xQbert,但假设item是UNIQUE / PRIMARY ...
SELECT a.*
FROM
( SELECT item FROM table1
UNION ALL
SELECT item FROM table2
) a
GROUP
BY item
HAVING COUNT(*) = 1;