Mysql 这个查询有什么问题?
有人能告诉我这个mysql查询出了什么问题吗? 有一个记录匹配,所以我想Mysql 这个查询有什么问题?,mysql,Mysql,有人能告诉我这个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 EL
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
或者,如果您只需要一个是否存在匹配的标志,则可以使用:
(f.follower_category_id is not null) as count
可能会从案例中删除“bookmark\u count”statement@Strawberry:不要编辑任何代码。为什么你在我的代码中添加了alais c,f等。不要为别人做这件事。如果你不知道答案,请跳过它。不编辑。好,只是为了让它可读。@草莓-请不要编辑有疑问的代码。你可能最终掩盖了实际的问题Previousy也是可读的。为什么要添加别名。我必须重新改写我的逻辑。如果您不知道答案,请勿编辑任何问题。您还删除了该图像。@Gordan Linoff:您也能回答这个问题吗。。
(f.follower_category_id is not null) as count