単純なクエリで
SELECT col1, col2, col3
FROM table1
GROUP BY col1
各行には、col
の一意の値ごとにcol2
とcol3
の最初の値が含まれます。
col1
の各値に対してMAX
およびMIN
を選択する方法。
何かのようなもの
SELECT col1, minimum of col2, maximum of col2, minimum of col3, maximum of col3
信じますか...
SELECT col1, MIN(col2), MAX(col2), MIN(col3), MAX(col3)
FROM table1
GROUP BY col1;
...?
各行には、colの一意の値ごとに、col2とcol3の最初の値が含まれます。
その主張は正確には真実ではありません。それはあなたが見ているものかもしれませんが、これが意味のあるものであると仮定しないでください、そしてこの観察に基づいてコードを書かないでください。元のクエリは、GROUP BY
の標準SQL処理から逸脱したMySQL拡張にはまったく有効ではありません。
MySQLは
GROUP BY
の使用を拡張して、選択リストがGROUP BY
節で指定されていない非集約列を参照できるようにします。
...これは最初のクエリで行ったものであり、col2とcol3は非集計列(集計関数が適用されていない列であり、group-byにはありません)ではありません。これをすると...
サーバーは各グループから任意の値を自由に選択できるため、それらが同じでない限り、選択された値は不確定です。
http://dev.mysql.com/doc/refman/5.5/en/group-by-extensions.html