我必须返回比较两个表时不同的所有行/行数。
我发现除了在sql中。 mysql中有没有像mysql中的 except 或 intersect 这样的东西?
我知道可以使用列表中具有列名称的查询来完成,但我不想使用列名称。
我的例子
表 1
|column1|column2|column3|column4|column5|column6|
+-------+-------+-------+-------+-------+-------+
|Value 1|Value 2|Value 3|Value 4|Value 5|Value 6|
|Value 1|Value 2|Value 3|Value 4|Value 5|Value 6|
|Value 1|Value 2|Value 3|Value 4|Value 5|Value 6|
|Value 1|Value 2|Value 3|Value 4|Value 5|Value 6|
|Value 1|Value 2|Value 3|Value 4|Value 5|Value 6|
表2
|column1|column2|column3|column4|column5|column6|
+-------+-------+-------+-------+-------+-------+
|Value 1|Value 2|Value 3|Value 4|Value 5|Value 6|
|Value 1|Value 2|Value 3|Value 4|Value 5|Value 6|
|Value 1|Value 2|Value 3|Value 4|Value 5|Value 6|
|Value 1|Value 2|Value 3|Value 4|Value 5|Value 6|
|Value 1|Value 2|Value 3|Value 4|Value 5|Value 6|
只用表名可以实现吗?
谢谢
最佳答案
因为没有已知的列名称,您可以使用 NATURAL LEFT JOIN
:
SELECT t1.*
FROM table1 t1
NATURAL LEFT JOIN (SELECT t2.*, 1 AS some_magic_name FROM table2 t2) t2
WHERE t2.some_magic_name IS NULL
UNION
SELECT t2.*
FROM table2 t2
NATURAL LEFT JOIN (SELECT t1.*, 1 AS some_magic_name FROM table1 t1) t1
WHERE t1.some_magic_name IS NULL
关于mysql - 不使用列名的两个表差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32601538/