mysql - SQL - 是否有相反但等效的 UNION 函数?

标签 mysql sql

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 种更详细的方法之一来实现反半连接。

NOT IN vs. NOT EXISTS vs. LEFT JOIN / IS NULL

关于mysql - SQL - 是否有相反但等效的 UNION 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12627746/

相关文章:

Mysql CAST(CONCAT_WS 试图获得正确的语法

c# - Sum(with Coalesce) with Group By in linq (for EF6)

sql - 如何将多个 select 语句拆分为列

sql - T-SQL Select where "IN"非常糟糕 性能影响

php - 在 php 中显示 3 行的问题

mysql - SQL 将属性与同一表中另一行的属性进行比较

sql - 如何从雪花数据库中的Varchar "JSON Array"中选择元素?

c# - 如何执行行锁?

mysql - 在同一个 SELECT 语句中组合两个 varchar 字段而不合并值

mysql - 当查询返回多行时返回第一行的单个值