gpt4 book ai didi

mysql - 如何连接共享一列的两个表中的任何一个,然后继续连接?

转载 作者:行者123 更新时间:2023-11-29 06:35:49 25 4
gpt4 key购买 nike

假设一个用户可以有两种帖子,一个是自己的帖子,另一个是外部链接的帖子。 两种类型都有自己的表格。每个帖子可以有多个标签。现在,我正在寻找一个查询,该查询可以为我提供 a) 过去 X 天内在帖子中使用的标签和 b) 创建这些标签的用户(以便向他们发送电子邮件)。

这是我目前所拥有的:

SELECT users.name, users.email, tags.name
FROM users
LEFT JOIN self_posts ON users.id = self_posts.user_id AND self_posts.date < x
LEFT JOIN ext_posts ON users.id = ext_posts.user_id AND ext_posts.date < x
WHERE NOT NULL coalesce(self_posts.id, ext_posts.id)
INNER JOIN tags on ~~either self_posts/ext_posts~~.tag_id = tag.id

如您所见,我不确定如何使内部联接使用两个表中的任何一个来联接标记表。我需要为左连接使用子查询吗?

注意:我的实际查询比这更复杂,需要更多的后续连接。我只是在说明问题。

最佳答案

为什么不首先获取 2 个表的并集:

SELECT users.name, users.email, tags.name
FROM users
join (
select *
from self_posts a
where a.date < x
union all
select *
from ext_posts a
where a.date < x) a a.user_id = users.id
INNER JOIN tags on a.tag_id = tag.id

关于mysql - 如何连接共享一列的两个表中的任何一个,然后继续连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24917479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com