Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 这个查询有什么问题?_Mysql - Fatal编程技术网

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

有人能告诉我这个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
或者,如果您只需要一个是否存在匹配的标志,则可以使用:

(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