表の列ではなく集計値を実際に選択すると、結果がより明確になります。
SELECT SUM(id) FROM plant ORDER BY SUM(id)
これにより、すべてのIDの合計が返されます。もちろん、これは役に立たない例です。集計では常に1つの行しか作成されないため、順序付けする必要はありません。クエリで行qith列を取得する理由は、MySQLがランダムではなく決定論的でもない1つの行を選択するためです。あなたの場合、それがテーブルの最初の列であることが起こりますが、ストレージエンジン、主キーなどによっては、他の列が別の行を取得する場合があります。したがって、ORDERBY句でのみ集計することはあまり役に立ちません。
通常は、特定のフィールドでグループ化してから、結果セットを何らかの方法で並べ替えます。
SELECT fruit, COUNT(*)
FROM plant
GROUP BY fruit
ORDER BY COUNT(*)
これはもっと興味深いクエリです!これにより、果物ごとに1行と、その果物の総数が表示されます。さらにリンゴを追加してみると、順序が実際に意味をなし始めます:
完全な表:
+----+--------+
| id | fruit |
+----+--------+
| 1 | banana |
| 2 | apple |
| 3 | orange |
| 4 | apple |
| 5 | apple |
| 6 | banana |
+----+--------+
上記のクエリ:
+--------+----------+
| fruit | COUNT(*) |
+--------+----------+
| orange | 1 |
| banana | 2 |
| apple | 3 |
+--------+----------+