从MySQL UNION查询中排除结果

时间:2010-09-09 21:18:32

标签: sql mysql union

从MySQL UNION中排除结果的正确方法是什么?我正在寻找相当于:

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

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

您可以使用WHERE NOT IN。

答案 2 :(得分:1)

被排除的比较列是否可以为空?

意思是,值可以为NULL吗?

如果是,请使用NOT INNOT EXISTS - either of these will perform better than LEFT JOIN/IS NULL, read this for details

如果不是,请使用LEFT JOIN/IS NULL,因为效率更高 - 请参阅this article for details

答案 3 :(得分:0)

我知道这是mySQL,但也许这可能有效。我在SQLServer上使用它

select * from (

select (query1)
union
select (query2)
) a

where a.column = xyz