gpt4 book ai didi

sql - 如何将第二个查询 'Horizontalize' 放入我的第一个查询中?

转载 作者:行者123 更新时间:2023-11-29 13:02:50 27 4
gpt4 key购买 nike

我有一个问题可以用一个很像 SO 的系统来模拟:帖子和标签。要获得我的帖子,我可能会这样做:

SELECT title, body, author FROM posts WHERE id = ?

然后很简单的得到我的标签

SELECT tag_id FROM tags_on_posts WHERE post_id = ?

假设我有一个限制,就像 SO 一样,每个帖子只能有 5 个标签。无论如何,我可以在单个查询中执行此操作吗?

SELECT title, body, author, tag1, tag2, tag3, tag4, tag5 
FROM posts
JOIN /*help*/
WHERE id = ?

最佳答案

您可以将标签聚合成一个字符串并在应用程序端拆分它们

select
title, body, author,
string_agg(tag_id, ',') as tag_ids
from
posts p
inner join
tags_on_posts top on p.id = top.post_id
where p.id = ?
group by 1, 2, 3

如果标签名称在第三个表中

select
title, body, author,
string_agg(tag_name, ',') as tag_names
from
posts p
inner join
tags_on_posts top on p.id = top.post_id
inner join
tags t on t.id = top.tag_id
where p.id = ?
group by 1, 2, 3

关于sql - 如何将第二个查询 'Horizontalize' 放入我的第一个查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24311436/

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