从MySQL联合查询中排除结果

从MySQL联合查询中排除结果,sql,mysql,union,Sql,Mysql,Union,从MySQL联合中排除结果的正确方法是什么?我正在寻找与之相当的: (query1) UNION (query2) UNION (query3) EXCEPT (query4) 您可以使用WHERE NOT IN.我知道这是mySQL,不过这可能有用。我在SQLServer上使用它 select * from ( select (query1) union select (query2) ) a where a.column = xyz 要进行排除比较的列是否可以为空? 也就是说,这些值

从MySQL联合中排除结果的正确方法是什么?我正在寻找与之相当的:

(query1)
UNION
(query2)
UNION
(query3)
EXCEPT
(query4)

您可以使用WHERE NOT IN.

我知道这是mySQL,不过这可能有用。我在SQLServer上使用它

select * from (

select (query1)
union
select (query2)
) a

where a.column = xyz
要进行排除比较的列是否可以为空? 也就是说,这些值可以为NULL吗

如果是-使用
不在
不存在
-

如果不是,请使用
左连接/IS NULL
,因为这样效率更高-请参阅

SELECT a.* FROM 
(
   SELECT ... FROM table_a
   UNION
   SELECT ... FROM table_b
)a 
WHERE a.x NOT IN (...) 
// or   WHERE NOT EXIST  ....' 
// or   LEFT JOIN table_n ON () WHERE table_n.id IS NULL