gpt4 book ai didi

使用联接的 mysql 查询

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

我正在尝试编写一个查询,以选择 friend 以及特定用户发布的最新“公告板”条目。意思是,如果我是查看此部分的用户,如果我发布了一些内容,它会显示最新的 6 个版 block 项目,包括我的。

获取好友的查询是:

SELECT b.id, b.user, b.title, b.text, b.time
FROM board b
JOIN user u ON u.user = b.user
JOIN friend f ON f.friend_id = u.id
WHERE f.user_id = 1
ORDER BY `time` DESC
LIMIT 0 , 6

我正在处理一些表,其中某些表使用实际用户名,而其他表使用用户 ID。因此,为什么加入。上面的查询获取了 friend 的所有最新帖子,但我希望用户自己的帖子也包括在内。例如:

SELECT b.id, b.user, b.title, b.text, b.time
FROM board b
JOIN user u ON u.user = b.user
JOIN friend f ON f.friend_id = u.id
WHERE f.user_id = 1
OR b.user = 'the_users_name'
ORDER BY `time` DESC
LIMIT 0 , 6

由于连接,第二个查询仅返回用户的 6 个重复行。我该如何解决这个问题,让它显示所有用户帖子和所有 friend 帖子?

最佳答案

我认为使用 UNION ALL 应该可以解决问题:

SELECT b.id, b.user, b.title, b.text, b.time
FROM board b
JOIN user u ON u.user = b.user
JOIN friend f ON f.friend_id = u.id
WHERE f.user_id = 1
UNION ALL
SELECT b.id, b.user, b.title, b.text, b.time
FROM board b
JOIN user u ON u.user = b.user
WHERE u.user_id = 1
ORDER BY time DESC
LIMIT 0,6

第一个查询应该为您提供 friend 的帖子,第二个查询将为您提供用户的帖子。 UNION ALL 将这些结果组合在一起,并将 order by & limit 应用于组合结果。

关于使用联接的 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7032535/

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