1

エラーメッセージが表示されました

SQL 構文にエラーがあります。GROUP BY name HAVING COUNT(DISTINCT goodfor_when.name) = 1 の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

エラーが発生するクエリの一部を次に示します

                    ....
        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
4

1 に答える 1

4

同じクエリに2つHAVINGまたは2つのコマンドを含めることはできず、の前に配置する必要があります。したがって、たとえば: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`;

さらに、t.id集計された列でない限り、必要にSELECT t.id応じGROUP BY t.idて、必要に応じてORDER BY t.id

于 2012-11-29T14:04:32.853 に答える