gpt4 book ai didi

php - SQL:重构 GROUP_CONCAT 查询

转载 作者:行者123 更新时间:2023-11-30 21:22:57 25 4
gpt4 key购买 nike

My eventual goal is to generate tag links for blog posts, the tags relating to the post.

目前我的查询有一个 GROUP_CONCAT它获取相关标签和返回的 tags列值类似于:

'布鲁克林、曼哈顿、纽约'

来自

SELECT 
post.id,
post.name,
GROUP_CONCAT( tags.name order by tags.name ) AS tags
FROM post
LEFT JOIN tags_items
ON post.id = tags_items.post
LEFT JOIN tags
ON tags_items.tag = tags.id

有了这个字符串,在我的服务器端代码中,我用逗号将它分开并循环生成标签。但是,现在我需要建立这些链接,并且我需要知道每个标签的各自 ID,以便生成一个链接,例如 <a href="?tag=1">New York</a>。 .我的 HTML 结构将是这样的:

<div class=post>
<h2>Rakim Allah!</h2>
<div class=tags>
<a href="/tags/1">Brooklyn</a>
<a href="/tags/2">Manhattan</a>
<a href="/tags/3">New York</a>
</div>
</div>

tags表:

id    name
1 Brooklyn
2 Manhattan

tags_items表(无 pk):

post  tag
1 1

最佳答案

您可以尝试使用不同的分隔符将 ID 添加到组列表中的每个项目:

SELECT post.id, post.name, 
GROUP_CONCAT( CONCAT(tags.id, ';', tags.name) order by tags.name ) AS tags
FROM post
LEFT JOIN tags
ON post.id = tags.post_id;

现在您只需对分号进行额外的拆分即可获得 ID 和名称。

关于php - SQL:重构 GROUP_CONCAT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1836004/

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