gpt4 book ai didi

MySQL group_concat问题

转载 作者:行者123 更新时间:2023-11-29 04:58:10 33 4
gpt4 key购买 nike

问候,

group_concat 函数有一个非常棘手的问题,我想了几天都没有成功,如何解决它。

有3张表:

tasks                    task_tag                 tag      
+---------+----------+ +---------+----------+ +---------+----------+
| task_id | data | | task_id | tag_id | | tag_id | name |
+---------+----------+ +---------+----------+ +---------+----------+
| 1 | task 1 | | 1 | 5 | | 5 | work |
| 2 | task 2 | | 1 | 7 | | 6 | school |
| 3 | task 3 | | 2 | 6 | | 7 | home |
+---------+----------+ +---------+----------+ +---------+----------+

当需要检索所有任务时,将它们关联的所有标签作为结果列,使用以下查询没有问题:

SELECT t.task_id, t.data, GROUP_CONCAT(tg.name) AS tags
FROM tasks t
LEFT JOIN task_tag tt ON tt.task_id = t.task_id
LEFT JOIN tag tg ON tg.tag_id = tt.tag_id
GROUP BY t.task_id

result
+---------+-----------+-------------+
| task_id | data | tags |
+---------+-----------+-------------+
| 1 | task 1 | work,home |
| 2 | task 2 | school |
| 3 | task 3 | NULL |
+---------+-----------+-------------+

问题是当我需要从一个 EXACT 标签中选择任务时,我仍然需要保留带有所有任务关联标签的标签列。我尝试使用以下查询,但由于结果受到 WHERE tag_id = 5 的限制,group_concat 函数仅检索 id = 5 的标签,例如“工作”:

SELECT t.task_id, t.data, GROUP_CONCAT(tg.name) AS tags
FROM tasks t
LEFT JOIN task_tag tt ON tt.task_id = t.task_id
LEFT JOIN tag tg ON tg.tag_id = tt.tag_id
WHERE tg.tag_id = 5
GROUP BY t.task_id

result
+---------+-----------+-------------+
| task_id | data | tags |
+---------+-----------+-------------+
| 1 | task 1 | work |
+---------+-----------+-------------+

我想要达到的结果是:

result
+---------+-----------+-------------+
| task_id | data | tags |
+---------+-----------+-------------+
| 1 | task 1 | work,home |
+---------+-----------+-------------+

非常感谢您就如何解决此问题提出任何建议!

最佳答案

您可以通过修改您的第一个查询以包含带有子查询的 where 子句来做到这一点:

SELECT t.task_id, t.data, GROUP_CONCAT(tg.name) AS tags
FROM tasks t
LEFT JOIN task_tag tt ON tt.task_id = t.task_id
LEFT JOIN tag tg ON tg.tag_id = tt.tag_id
WHERE t.task_id IN (SELECT task_id FROM task_tags WHERE tag_id=5)
GROUP BY t.task_id

关于MySQL group_concat问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4540672/

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