排除 MySQL UNION 查询的结果

发布于 2024-09-18 03:28:16 字数 125 浏览 5 评论 0原文

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

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

What is the proper way to exclude results from a MySQL UNION? I'm looking for the equivalent to:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

美煞众生 2024-09-25 03:28:17
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
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
浅浅 2024-09-25 03:28:17

您可以使用 WHERE NOT IN。

You can use WHERE NOT IN.

盗心人 2024-09-25 03:28:17

进行排除比较的列可以为空吗?

意思是,这些值可以为 NULL 吗?

如果是 - 使用 NOT INNOT EXISTS - 其中任何一个都会比 LEFT JOIN/IS NULL 表现更好,请阅读此内容了解详细信息

如果不是,请使用LEFT JOIN/IS NULL,因为它更有效 - 请参阅本文了解详细信息

Can the column(s) being compared for exclusion be nullable?

Meaning, can the values be NULL?

If yes - use either NOT IN or NOT EXISTS - either of these will perform better than LEFT JOIN/IS NULL, read this for details.

If no, use a LEFT JOIN/IS NULL because it's more efficient - see this article for details.

看海 2024-09-25 03:28:17

我知道这是 mySQL,但是也许这可行。我在 SQLServer 上使用这个

select * from (

select (query1)
union
select (query2)
) a

where a.column = xyz

I know this is mySQL, however maybe this might work. I use this on SQLServer

select * from (

select (query1)
union
select (query2)
) a

where a.column = xyz
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文