gpt4 book ai didi

mysql - 根据标签选择过滤更新并显示与每个更新相关的所有标签

转载 作者:行者123 更新时间:2023-11-29 19:16:13 25 4
gpt4 key购买 nike

我有下表

更新标签updates_tags

我使用以下查询根据所选标签过滤掉更新。

SELECT 
`updates`.`id` as `update_id`,
`updates`.`body` as `update`,
group_concat(DISTINCT `tags`.`title` ORDER BY `tags`.`title` ASC SEPARATOR ", ") AS tags
FROM `updates`
LEFT JOIN `updates_tags` ON `updates`.`id` = `updates_tags`.`update_id`
LEFT JOIN `tags` ON `updates_tags`.`tag_id` = `tags`.`id`
WHERE `updates_tags`.`tag_id` IN (?) #### <- FILTER ####
GROUP BY `updates`.`id`

我想保留过滤器还有一个列,其中包含与更新相关的所有标签。可能与 GROUP_CONCAT 有关,或者我可能需要额外的 JOIN

最佳答案

您的查询看起来不错。您只需为过滤器传入以逗号分隔的标签 ID 列表。

SELECT 
`u1`.`id` AS `update_id`,
`u1`.`body` AS `update`,
GROUP_CONCAT(DISTINCT `t1`.`title` ORDER BY `t1`.`title` ASC SEPARATOR ', ') AS `tags`
FROM `updates` AS `u1`
INNER JOIN `updates_tags` AS `ut1` ON (`u1`.`id` = `ut1`.`update_id`)
INNER JOIN `tags` AS `t1` ON (`ut1`.`tag_id` = `t1`.`id`)
INNER JOIN `updates_tags` AS `ut2` ON (`u1`.`id` = `ut2`.`update_id`)
INNER JOIN `tags` AS `t2` ON (`ut2`.`tag_id` = `t2`.`id` AND `t2`.`id` IN (3, 4))
GROUP BY `u1`.`id`

关于mysql - 根据标签选择过滤更新并显示与每个更新相关的所有标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42687690/

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