Mysqlのgroup byの問題。 。
某草草
某草草 2017-05-18 10:52:23
0
9
692

Mysqlでは以下のような記述方法が許可されています。しかし、それは厳密ですか? このような書き方をサポートしますか?この問題を解決する方法について疑問がある場合は、助けてください。

リーリー
某草草
某草草

全員に返信(9)
刘奇

最新の文書説明は公式サイトに到達しました。

MySQL 5.7.5 以降では、機能の依存関係の検出が実装されています。 ONLY_FULL_GROUP_BY SQL モードが有効になっている場合 (デフォルトです)、MySQL は、選択リスト、HAVING 条件、または ORDER BY リストが、GROUP BY 句で名前が付けられておらず、機能的にもそれらに依存していない非集約カラムを参照するクエリを拒否します。 。 (5.7.5 より前の MySQL は関数の依存関係を検出せず、ONLY_FULL_GROUP_BY はデフォルトで有効になっていません。5.7.5 より前の動作の説明については、MySQL 5.6 リファレンス マニュアルを参照してください。)

来源:https://dev.mysql.com/doc/ref...

いいねを押す +0
给我你的怀抱

select のフィールドはグループ by に強制的に書き出す必要があります
ユーザー グループからユーザー名をユーザー名で選択します;

http://blog.csdn.net/u2830560...

いいねを押す +0
刘奇

まず、グループ化の概念と、グループ化後にどのような効果が得られるかを理解します。
グループ化は、グループの属性に基づいて統計的な分析を行うためのものです。
たとえば、生徒のテーブルを性別ごとにグループ化すると、次のようになります。男の子は何人、女の子は何人。
クエリ結果列は、sum や count などの集計関数で構成されている必要があります。例:
select count(*),sex from students group by sex;
select * from user group by user_name; の場合、どのような統計結果を取得したいですか?
mysql5.6 はデフォルトでこの書き込みメソッド select * from user group by user_name を使用できますが、ステートメントは実際には内部で変換されます。
mysql5.7 以降ではデフォルトでこの書き込みメソッドを使用できず、エラーが報告されます。
したがって、書く前に、グループ化を通じて何をカウントする必要があるかを考え、適切な集計関数を使用してください

いいねを押す +0
Peter_Zhu

SQL文でGROUP BYを使用する場合の3つの注意点
1: エイリアスは使用できません
2: 関数フィールドを除き、selectに表示されるフィールドはgroup byに使用する必要があります
3: エイリアスには予約語を使用できません
この3つ「MYSQL」をクリックするための要件はありません。
もう一度ステートメントを見てみましょう。ユーザー テーブルにフィールド user_name が 1 つしかない場合、このステートメントには問題はありません。
ユーザー テーブルに複数のフィールドがある場合、mysql のこのステートメントには問題はありません。 oracle と sqlserver に問題があります。

いいねを押す +0
刘奇

リーリー

いいねを押す +0
伊谢尔伦

user_name フィールドが存在する場合は問題ありません。 Group by はフィールドごとにグループ化するもので、通常は SQL と同様に実行できます。ただし、user_name は通常一意であり、一意のフィールドでグループ化することは意味がありません。

いいねを押す +0
黄舟

これは mysql の特別な機能のサポートです。@xuexiphpa が言ったように、パラメーターを使用してオフにすることができます。

ただし、これを使用することはお勧めしません。一般に、グループ化後は、グループ化前よりも返されるレコードの数が少なくなります。
どのレコードが返されるかを確認せずに、select * を直接使用します。

いいねを押す +0
滿天的星座

一般的には、集計関数の組み合わせがより一般的に使用されます

いいねを押す +0
给我你的怀抱

group by aggregation グループ化後は、要素を select 句内のみに保持することが最善です:
1、定数
2、group by
3 で指定された列名、count()、avg() などの集計関数、合計( *)待ってください

結果* にはグループごとに 1 つのレコードのみがリストされており、それが最初のレコードなのかランダムな値なのかはわかりません

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!