Mysql select在SQLworkbench中的此位置无效
当我执行以下sql时,返回了错误Mysql select在SQLworkbench中的此位置无效,mysql,sql,Mysql,Sql,当我执行以下sql时,返回了错误 select在此位置对此服务器版本无效,应为、锁、表、值,并带有“(” 我的sql语句如下所示 select id ,COALESCE(count(*) FILTER (WHERE snapshot_day in ('2021-04-19')), 0) AS "2021-04-19" ,COALESCE(count(*) FILTER (WHERE snapshot_day in ('2021-04-20')), 0) AS "2
select在此位置对此服务器版本无效,应为、锁、表、值,并带有“(”
我的sql语句如下所示
select
id
,COALESCE(count(*) FILTER (WHERE snapshot_day in ('2021-04-19')), 0) AS "2021-04-19"
,COALESCE(count(*) FILTER (WHERE snapshot_day in ('2021-04-20')), 0) AS "2021-04-20"
,COALESCE(count(*) FILTER (WHERE snapshot_day in ('2021-04-21')), 0) AS "2021-04-21"
from table
where type in ('Daily')
group by 1
我检查了我的查询,但没有发现任何错误
问题在哪里
如果有人有意见,请告诉我
谢谢如前所述,mysql中没有过滤器,但您仍然可以通过以下方式实现相同的效果:
select
id
,coalesce(sum(case when snapshot_day in ('2021-04-19') then 1 else 0 end), 0) AS "2021-04-19"
,coalesce(sum(case when snapshot_day in ('2021-04-20') then 1 else 0 end), 0) AS "2021-04-20"
,coalesce(sum(case when snapshot_day in ('2021-04-21') then 1 else 0 end), 0) AS "2021-04-21"
from table
where type in ('Daily')
group by 1
FILTER
是Prosgresql(可能还有另一个DBMS)功能,它不适用于MySQL。@Akina:FILTER
实际上是SQL标准的一部分,不是特定于PostgreSQL的。但实际上,支持并不广泛。据我所知,只有Postgres、HSQLDB和SQLite支持它