Mysql 计数(不同的'goodfor_what`.'name`)=3会导致错误消息
我收到了错误信息 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 当.name=1时,具有COUNTDISTINCT goodfor_的近组名称 下面是发生错误的查询的一部分Mysql 计数(不同的'goodfor_what`.'name`)=3会导致错误消息,mysql,sql,Mysql,Sql,我收到了错误信息 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 当.name=1时,具有COUNTDISTINCT goodfor_的近组名称 下面是发生错误的查询的一部分 .... WHERE ( `city`.`name` = "London" ) AND `goodfor_what`.`name` IN ("Beers","Wine","Food")
....
WHERE
( `city`.`name` = "London" ) AND
`goodfor_what`.`name` IN ("Beers","Wine","Food")
GROUP BY name
HAVING COUNT(DISTINCT `goodfor_what`.`name`) = 3 AND `goodfor_when`.`name` IN ('Daytime') GROUP BY name
HAVING COUNT(DISTINCT `goodfor_when`.`name`) = 1 ORDER BY `t`.`name`, `t`.`id`;
但是,如果删除该行,则该操作有效
HAVING COUNT(DISTINCT `goodfor_what`.`name`) = 3 AND `goodfor_when`.`name` IN ('Daytime') GROUP BY name
同一查询中不能有两个HAVING或两个GROUP BY命令,GROUP BY必须放在HAVING之前。例如:
GROUP BY name
HAVING (COUNT(DISTINCT `goodfor_what`.`name`) = 3 AND `goodfor_when`.`name` IN ('Daytime'))
OR COUNT(DISTINCT `goodfor_when`.`name`) = 1
ORDER BY `t`.`name`, `t`.`id`;
此外,除非t.id是聚合列,否则如果要按t.id排序,则必须选择t.id和GROUP BY t.id。同一查询中不能有两个HAVING或两个GROUP BY命令,并且GROUP BY必须放在HAVING之前。例如:
GROUP BY name
HAVING (COUNT(DISTINCT `goodfor_what`.`name`) = 3 AND `goodfor_when`.`name` IN ('Daytime'))
OR COUNT(DISTINCT `goodfor_when`.`name`) = 1
ORDER BY `t`.`name`, `t`.`id`;
此外,除非t.id是聚合列,否则如果要按t.id排序,就必须选择t.id和GROUP BY t.id