0

クエリがあります:

SELECT ID, MIN(SQRT(POW((100-x),2)) + POW((150-y),2)) AS distance 
FROM cabstands 
GROUP BY ID

座標系で点100、150に最も近い点のIDを見つけます。IDを要求せずに距離だけを取得しようとすると、クエリは真の値を返します。ただし、(上記のクエリのように)IDを要求すると、GROUP BYがあるため、すべてのポイントが返されます。GROUP BYを指定しないと、次のように言ってクエリを実行できません。

IDは、集計関数にもGROUP BY句にも含まれていないため、選択リストでは無効です。

私の問題の解決策は何ですか。前もって感謝します。

4

1 に答える 1

1

次を使用できます。

SELECT TOP 1 ID, MIN(SQRT(POW((100-x),2)) + POW((150-y),2)) AS distance FROM cabstands GROUP BY ID ORDER BY distance ASC

またはMySQLの場合:

SELECT ID, MIN(SQRT(POW((100-x),2)) + POW((150-y),2)) AS distance FROM cabstands GROUP BY ID ORDER BY distance ASC LIMIT 1
于 2012-05-20T01:34:25.297 に答える