誰かが私にSQLクエリを送信しましたが、このGROUP BY
句は次のステートメントで構成されていますGROUP BY 1
。
これはタイプミスである必要がありますか?エイリアス1が指定されている列はありません。これはどういう意味ですか?これはタイプミスであると思いますか?
誰かが私にSQLクエリを送信しましたが、このGROUP BY
句は次のステートメントで構成されていますGROUP BY 1
。
これはタイプミスである必要がありますか?エイリアス1が指定されている列はありません。これはどういう意味ですか?これはタイプミスであると思いますか?
回答:
SELECT account_id, open_emp_id
^^^^ ^^^^
1 2
FROM account
GROUP BY 1;
上記のクエリでGROUP BY 1
は、first column in select statement
どちらであるかを参照しています
account_id
。
で指定することもできますORDER BY
。
注:ORDER BYおよびGROUP BYの数値は、0ではなく常に1で始まります。
フィールド名によるグループ化に加えて、序数、またはテーブル内のフィールドの位置によってグループ化することもできます。1は最初のフィールド(名前に関係なく)に対応し、2は2番目のフィールドに対応します。
テーブル/ビューの構造が変更される可能性があるため、特定のものでグループ化している場合、これは一般に不適切です。また、テーブルのフィールドを覚えていない場合、SQLクエリの動作をすばやく理解するのが難しい場合があります。
一意のセットを返す場合、または一時的なルックアップをすばやく実行する場合、これは入力を減らすための優れた省略構文です。ある時点で再度クエリを実行する予定がある場合は、それらを置き換えることで、将来の混乱や予期しない複雑さ(スキームの変更による)を回避することをお勧めします。