gpt4 book ai didi

mysql - 聚合函数的返回值

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

我的 sql 查询获取“posts”以及与其关联的所有标签:

SELECT 
posts.*,
GROUP_CONCAT(tags.tag_name) tags
FROM
posts
LEFT JOIN relation ON relation.post_id = posts.id
LEFT JOIN tags ON tags.tag_id = relation.tag_id
GROUP BY posts.id

(这只是示例代码)。

如果不存在标签,“tags”字段将返回 NULL。如何将此 NULL 值更改为空字符串?

我们可以使用 SELECT posts.*, IF(ISNULL(GROUP_CONCAT(tags.tag_name)),'',GROUP_CONCAT(tags.tag_name)) AS 标签 ....

但它 GROUP_CONCAT 两次。正确的 ?最好的方法是什么?

最佳答案

您可以使用 COASLESCE 来缩短 if

SELECT 
posts.*,
COALESCE(GROUP_CONCAT(tags.tag_name),'') AS tags
FROM
posts
LEFT JOIN relation ON relation.post_id = posts.id
LEFT JOIN tags ON tags.tag_id = relation.tag_id
GROUP BY posts.id

MySQL 还支持 IFNULL,其作用相同,但 IFNULL 只允许 2 个参数,而不是像 COALESCE 那样无限数量。

关于mysql - 聚合函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8213148/

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