我收到错误消息
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 GROUP BY name HAVING COUNT(DISTINCT goodfor_when.name) = 1 附近使用的正确语法。
这是发生错误的查询的一部分
....
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`;
Run Code Online (Sandbox Code Playgroud)
但如果删除线就可以了
HAVING COUNT(DISTINCT `goodfor_what`.`name`) = 3 AND `goodfor_when`.`name` IN ('Daytime') GROUP BY name
Run Code Online (Sandbox Code Playgroud)
同一查询中不能有两个HAVING或两个命令,并且必须放在. 所以,例如:GROUP BYGROUP BYHAVING
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`;
Run Code Online (Sandbox Code Playgroud)
还有更多,除非t.id是聚合列,否则您必须这样做SELECT t.id,GROUP BY t.id如果您愿意的话ORDER BY t.id