gpt4 book ai didi

mysql - 在 mysql 中使用 CASE 语句求和

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

我有以下 Mysql 查询

SELECT c.`id`
,c.`category_name`
,c.`category_type`
,c.bookmark_count
,f.category_id cat_id
,f.unfollow_at
,(
CASE WHEN c.id = f.follower_category_id
THEN (
SELECT count(`user_bookmarks`.`id`)
FROM `user_bookmarks`
WHERE (`user_bookmarks`.`category_id` = cat_id)
AND ((`f`.`unfollow_at` > `user_bookmarks`.`created_at`) || (`f`.`unfollow_at` = '0000-00-00 00:00:00'))
)
ELSE 0 END
) counter
,c.id
,f.follower_category_id follow_id
,c.user_id
FROM categories c
LEFT JOIN following_follower_categories f ON f.follower_category_id = c.id
WHERE c.user_id = 26
ORDER BY `category_name` ASC

这是执行后我得到的输出 See Screen

现在我只想数数。在这里,我有值 172 的字段 ID,我有计数器 30,3, 2 和 Bookmark_count 是 4(我只需要包括一次)

我接受 id 172 的输出是 30+3+2+4(bookmark_count only once)

我不知道该怎么做。

谁能帮帮我

非常感谢

最佳答案

以下可能是用于该目的的最低效的查询,但我为您的查询添加了一个封面以暗示对结果进行分组。(我删除了第二个 c.id,我的示例可能有错误,因为我无法尝试。)

SELECT `id`,
`category_name`,
`category_type`,
max(`bookmark_count`),
`cat_id`,
`unfollow_at`,
sum(`counter`)+max(`bookmark_count`) counter,
follow_id`, `user_id`
FROM
(SELECT c.`id`
,c.`category_name`
,c.`category_type`
,c.bookmark_count
,f.category_id cat_id
,f.unfollow_at
,(
CASE WHEN c.id = f.follower_category_id
THEN (
SELECT count(`user_bookmarks`.`id`)
FROM `user_bookmarks`
WHERE (`user_bookmarks`.`category_id` = cat_id)
AND ((`f`.`unfollow_at` > `user_bookmarks`.`created_at`) || (`f`.`unfollow_at` = '0000-00-00 00:00:00'))
)
ELSE 0 END
) counter
,f.follower_category_id follow_id
,c.user_id
FROM categories c
LEFT JOIN following_follower_categories f ON f.follower_category_id = c.id
WHERE c.user_id = 26)
GROUP BY `id`, `category_name`, `category_type`, `cat_id`, `unfollow_at`, `follow_id`, `user_id`
ORDER BY `category_name` ASC

关于mysql - 在 mysql 中使用 CASE 语句求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25644489/

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