4

同僚が不可解なSQLクエリを持って私にやって来ました。

(本質的に)

SELECT LEAST(id) FROM tableA A, tableB B WHERE a.name = b.name(+)

ただし、返される結果セットには3つの数値がリストされます。

LEAST(id)
--------------
621
644
689

(すべて、LEAST関数がすべて一緒に欠けているかのようにクエリを満たすIDです)

なんで?=)

4

1 に答える 1

14

LEAST(x,y,...)は集計関数ではありません。パラメータでのみ機能します。必要な関数は MIN(x) です。

各レコードに対して、常に id を返す LEAST(id) を実行しています。LEAST より多くのパラメーターを渡していた場合、異なる結果が表示されます。たとえば、LEAST(5,6,7) = 5. LEAST は常にパラメータの最小値を返しますが、MIN はすべてのレコードの最小値を返します。

于 2009-02-24T15:28:00.060 に答える