SQLite 3 で次のクエリを実行しようとしています。
SELECT *,
DISTANCE(latitude, longitude, ?, ?) AS "distance"
FROM "country"
WHERE "id" NOT LIKE ?
HAVING "distance" <= ?
ORDER BY "distance" ASC;
しかし、次のエラーが表示されます。
SQLSTATE[HY000]: 一般エラー: 1 HAVING の前に GROUP BY 句が必要です
SQLite が結果をグループ化する必要がある理由がわかりませんが、それでも次のことを試しました。
SELECT *,
DISTANCE(latitude, longitude, ?, ?) AS "distance"
FROM "country"
WHERE "id" NOT LIKE ?
GROUP BY "id"
HAVING "distance" <= ?
ORDER BY "distance" ASC;
そして、私もこれを試しました:
SELECT *,
DISTANCE(latitude, longitude, ?, ?) AS "distance"
FROM "country"
WHERE "id" NOT LIKE ?
GROUP BY "distance"
HAVING "distance" <= ?
ORDER BY "distance" ASC;
エラーはありませんが、すべてのレコードが返されました ( を含むものも含む"distance" > ?
)。私もやってみました:
SELECT *,
DISTANCE(latitude, longitude, ?, ?) AS "distance"
FROM "country"
WHERE "id" NOT LIKE ?
AND "distance" <= ?
ORDER BY "distance" ASC;
同じ出力で、すべてのレコードが返されました。再確認しました-距離が正しく計算されています...このクエリの何が問題なのかわかりません。誰か助けてもらえますか?