同僚が不可解なSQLクエリを持って私にやって来ました。
(本質的に)
SELECT LEAST(id) FROM tableA A, tableB B WHERE a.name = b.name(+)
ただし、返される結果セットには3つの数値がリストされます。
LEAST(id)
--------------
621
644
689
(すべて、LEAST関数がすべて一緒に欠けているかのようにクエリを満たすIDです)
なんで?=)
同僚が不可解なSQLクエリを持って私にやって来ました。
(本質的に)
SELECT LEAST(id) FROM tableA A, tableB B WHERE a.name = b.name(+)
ただし、返される結果セットには3つの数値がリストされます。
LEAST(id)
--------------
621
644
689
(すべて、LEAST関数がすべて一緒に欠けているかのようにクエリを満たすIDです)
なんで?=)
LEAST(x,y,...)は集計関数ではありません。パラメータでのみ機能します。必要な関数は MIN(x) です。
各レコードに対して、常に id を返す LEAST(id) を実行しています。LEAST より多くのパラメーターを渡していた場合、異なる結果が表示されます。たとえば、LEAST(5,6,7) = 5
. LEAST は常にパラメータの最小値を返しますが、MIN はすべてのレコードの最小値を返します。