mysql - 不使用列名的两个表差异

标签 mysql

我必须返回比较两个表时不同的所有行/行数。

我发现除了在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

working sample on SQL Fidle .

关于mysql - 不使用列名的两个表差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32601538/

相关文章:

mysql - 是拥有一张大 table 更好还是应该使用几张 table ?

php - PDO MySQL prepare->execute INSERT INTO 未出现在数据库中

php - 如何删除整数的最后一位? (PHP)

Mysql,select-如何获取上次登录的列表

php - MYSQL查询神奇地抓取数值

PHP mysqli 列表框

php - 选择最大值和相应的列

mysql - 在插入新数据之前截断表

不同列的MySql SELECT联合?

mysql - MySQL 中多列索引的限制