GROUP BY
句がGROUP BY 1
の文で構成されているSQLクエリを誰かに送ってきました。SQL文節 "GROUP BY 1"は何を意味しますか?
これは誤植である必要がありますか?エイリアス1の列はありません。これはどういう意味ですか?これはタイプミスでなければならないと思いますか?
GROUP BY
句がGROUP BY 1
の文で構成されているSQLクエリを誰かに送ってきました。SQL文節 "GROUP BY 1"は何を意味しますか?
これは誤植である必要がありますか?エイリアス1の列はありません。これはどういう意味ですか?これはタイプミスでなければならないと思いますか?
これは、呼び出されたものに関係なく、最初の列でグループ化することを意味します。 ORDER BY
と同じことができます。
これは上記のクエリGROUP BY 1
のSELECT句
SELECT account_id, open_emp_id
^^^^ ^^^^
1 2
FROM account
GROUP BY 1;
の最初のフィールドでグループは account_id
あるfirst column in select statement
を意味するであろう。
ORDER BY
で指定することもできます。
グループバイ句の後に置く列の位置によってグループ化します。
たとえば、 'SELECT SALESMAN_NAME, SUM(SALES) FROM SALES GROUP BY 1
' を実行すると、グループはSALESMAN_NAME
になります。
「Select *
」を実行して何らかの理由で列が異なる順序でテーブルを再作成すると、予想よりも異なる結果が表示される可能性があります。
あなたも、もちろん、それは私たちのために便利ですが、あなたはその条件に注意を払う必要があり、このGROUP BY 1,2,3..
のように使用することができるほか、あなたのselect句で第一列でSQLグループを意味し、我々は常に、ORDER BY 1
と一緒にこのGROUP BY 1
を使用一部の列が選択列を変更して可視化されていない場合に結果が得られない可能性があります。
結果セットの最初の列 – Lamak
この構文は移植性がないことに注意してください。 mysql以外のデータベースでは動作が異なります。たとえば、Oracleでは定数として扱われます。 –
@RussellReedはい。残念ながら(エイリアスを使用すると非常に便利なことがあるため)、ansi sqlでは列の順序でグループ化することはできません。その理由は、グループが投影前に起こることです。しかし、何十行もの式をグループ化すると、最終的なSQL文では数十行の* mutiples *になります。 – javadba