gpt4 book ai didi

mysql - 这个查询Mysql出了什么问题?

转载 作者:行者123 更新时间:2023-11-29 07:54:03 25 4
gpt4 key购买 nike

enter image description here谁能告诉我这个 mysql 查询出了什么问题?有一条记录匹配,所以我猜 count 应该是 1 而不是 0。

SELECT c.bookmark_count
, f.category_id cat_id
, f.unfollow_at
, CASE bookmark_count WHEN c.id = f.follower_category_id
THEN 1
ELSE 0 END count
, 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;



bookmark_count cat_id unfollow_at count id follow_id user_id
4 72 0000-00-0000:00:00 0 172 l72 26
10 NULL NULL 0 164 NULL 26
1 NULL NULL 0 173 NULL 26
9 NULL NULL 0 199 NULL 26
3 NULL NULL 0 200 NULL 26
3 NULL NULL 0 201 NULL 26
1 NULL NULL 0 202 NULL 26
0 NULL NULL 0 203 NULL 26
3 NULL NULL 0 204 NULL 26
0 NULL NULL 0 206 NULL 26
0 NULL NULL 0 207 NULL 26
0 NULL NULL 0 208 NULL 26
0 NULL NULL 0 209 NULL 26
1 NULL NULL 0 210 NULL 26

最佳答案

以下表达式在语法上并非在所有数据库中都正确,但在 MySQL 中确实有效:

 (CASE bookmark_count WHEN c.id = f.follower_category_id 
THEN 1
ELSE 0
END) count

这本质上相当于以下逻辑:

if c.id = f.follower_category_id and bookmark_count = 1 then 1
else if c.id <> f.follower_category_id and bookmark_count = 0 then 1
else 0

(为了简单起见,忽略 NULL 值。)

即表达式 c.id = f.follower_category_id不被视为条件,而是被视为整数表达式 1对于 true 和 0对于其他。

我不确定你真正想要什么。也许是:

 (CASE WHEN c.id = f.follower_category_id 
THEN bookmark_count
ELSE 0
END) count

或者,如果您只想要一个关于是否存在匹配的标志,那么您可以使用:

(f.follower_category_id is not null) as count

关于mysql - 这个查询Mysql出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25621908/

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