SQL構文について興味があります。
SELECT
itemName as ItemName,
substring(itemName, 1,1) as FirstLetter,
Count(itemName)
FROM table1
GROUP BY itemName, FirstLetter
これは間違いです。
GROUP BY itemName, FirstLetter
本当にそうあるべきだ
GROUP BY itemName, substring(itemName, 1,1)
しかし、なぜ利便性のために前者を単純に使用できないのでしょうか?
ベストアンサー1
SQL は、クエリが次の順序で実行されたかのように実装されます。
- FROM句
- WHERE句
- GROUP BY句
- HAVING 句
- SELECT句
- ORDER BY句
ほとんどのリレーショナル データベース システムでは、この順序により、前の手順で導入されている必要があるため、どの名前 (列またはエイリアス) が有効であるかが説明されます。
したがって、Oracle および SQL Server では、GROUP BY が SELECT 句の前に実行されるため、SELECT 句で定義した用語を GROUP BY 句で使用することはできません。
ただし、例外もあります。MySQL と Postgres には、それを可能にする追加のスマート機能があるようです。