sum在mysql中出错时的大小写

vyswwuz2  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(302)

我写过:

select 
    sum(case when is_trigger = "1" and when lh.ladder_change = "1" then 1 else 0 end),
    lh.member_id as "SFID"
From
  leeds_so.leenk_ladder_config as lc
  left join leeds.leenk_ladder_history as lh on lc.id = lh.ladder_config_id 

group by lh.member_id

limit 100;

我得到一个错误:

ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.member_id as "SFID"
From
  leeds_so.leenk_ladder_config as lc
  left join le' at line 2

我不确定是什么错误。有人能帮我吗?谢谢!

cnjp1d6j

cnjp1d6j1#

and when 不是有效的sql。放下枪 when . 您可以进一步简化逻辑:

select sum(is_trigger = 1 and lh.ladder_change = 1),
       lh.member_id as SFID
From leeds_so.leenk_ladder_config lc left join 
     leeds.leenk_ladder_history lh
     on lc.id = lh.ladder_config_id 
group by lh.member_id
limit 100;

笔记:
mysql将布尔表达式视为数字,其中“1”表示真,“0”表示假。所以,不 case 是需要的。
你可能打算 inner join 或者换table。您正在按第二个表中的列进行聚合。当没有对手的时候,就是这样 NULL .
双引号在sql中不是字符串的合适分隔符。字符串使用单引号。
我认为常数实际上是数字,所以根本不需要引用。

相关问题