mysql有相反但等效的UNION函数吗?
我知道可以通过更长的查询来做到这一点,但我很好奇是否有等效的功能。
我有 2 个选择语句用于 2 个不同的表
select state, state_name, id, idname, phone, mobile, home from table1
select state, state_name, id, idname, phone, mobile, home from table2
而且我需要一个仅从 table1 中提取的查询,并且仅当 table1 中的 idname、phone、mobile、home 与 table2 不匹配时才提取
例如:Table1有
AK | Alaska | 1 | row6 | 453 | 567 | 123
但表 2 有:
AK | Alaska | 1 | row6 | 453 | 567 | 123
AK | Alaska | 1 | row6 | NULL | 567 | 123
AK | Alaska | 1 | tttttt | 453 | 567 | 123
查询将显示
AK | Alaska | 1 | row6 | NULL | 567 | 123
AK | Alaska | 1 | tttttt | 453 | 567 | 123
不会显示
AK | Alaska | 1 | row6 | 453 | 567 | 123
最佳答案
在标准 SQL 中,您可以使用 ANSI SQL EXCEPT
运算符,它与 UNION
SELECT * FROM Table2
EXCEPT
SELECT * FROM Table1
还有一个INTERSECT
set operator这将显示两个来源共有的行。
不幸的是,当前版本的 MySQL 都不支持这两种方法,因此您需要使用其他 3 种更详细的方法之一来实现反半连接。
关于mysql - SQL - 是否有相反但等效的 UNION 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12627746/