从MySQL UNION中排除结果的正确方法是什么?我正在寻找相当于:
(query1)
UNION
(query2)
UNION
(query3)
EXCEPT
(query4)
答案 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 IN
或NOT 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