データシート: 列から行へ: max(case when then) を使用 max---集計関数は最大値を取る (もちろん「中国語」の場合はスコア、それ以外は0で終了) ---判定 言語として---列名としてエイリアス 選択 `名前`、 最大( 場合 コース = '中国語' の場合 スコア 終わり ) AS言語、 最大( 場合 コース = '数学' の場合 スコア 終わり ) AS数学、 最大( 場合 コース = '英語' の場合 スコア 終わり ) 英語から 学生 GROUP BY `名前` ; マージフィールドの表示: group_cancat(course,":","score") を使用します 選択 `名前`、 GROUP_CONCAT(コース, ":", スコア) AS スコア FROM 学生 グループ化 `名前`; group_concat() について、マニュアルには次のように記載されています: この関数は、グループ接続から NULL 以外の値を含む文字列結果を返します。 簡単に言えば、group_concat() はどの行が同じグループに属しているかを計算し、同じグループに属する列を表示します。どの列を返すかは関数によって決まります パラメータの数(つまり、フィールド名)によって決まります。グループ化には基準が必要です。つまり、group by で指定した列に従ってグループ化する必要があります。 私の推測では、group_concat 関数は内部で group by ステートメントを実行するはずです。 1. テストステートメント: 選択 GROUP_CONCAT(`名前`) から 学生 グループ化 `名前`; 結果は、name 内のどの値が同じであるかを見つけることです。等しい場合は、次のように、すべてをカンマで区切ってリストします。 group_concat('名前') 2. テスト: 選択 GROUP_CONCAT(`名前`) から 学生 ; 結果: group_concat('名前') group_concatはgroup byステートメントと一緒に使用した場合にのみ有効であることを証明できますか?以下は実際のテストです。 3. group_concat() の設定に対する定数の効果をテストします。 @@GROUP_CONCAT_MAX_LEN=4 を設定します マニュアルには、設定の構文は次の通りであると記載されています。 [セッション | グローバル] group_concat_max_len = val を設定します。 この2つの違いは何でしょうか? @@global.GROUP_CONCAT_MAX_LEN=4 を設定します。 4. ステートメントを使用する 選択 結果は次のとおりです。 group_concat('名前') 結論:目的の効果を得るには、group_concat() 関数を group by ステートメントと一緒に使用する必要があります。 理由は次のように理解できます: group_concat() はグループ x に属するすべてのメンバーを取得します (関数内の列パラメータは、表示する必要があるフィールドを指定します)。グループxはどこから来たのでしょうか? group by が指定されていない場合、group_concat() がメンバーを表示するためにどのグループを使用するかは不明です。 したがって、上記に group by 句がない場合、Liu Bei、Guan Yu、Zhang Fei、Liu Bei、Guan Yu、Zhang Fei、Liu Bei、Guan Yu、Zhang Fei が表示されます。 この機能は実際にいつ必要になるのでしょうか? クエリ結果が次のようになっているとします。左側にグループ名が表示され、右側にグループ下のすべてのメンバー情報が表示されます。この機能を使用すると、多くのトラブルを回避できます。 また、以下を使用する場合: 選択 `名前`、 GROUP_CONCAT(コース, ":", スコア) AS スコア FROM 学生 ; あまり意味がありません。 group_concat() の場合、単一の列を指定するのが最善の方法です。複数の列が指定されている場合。 選択 `名前`、 GROUP_CONCAT(コース, ":", スコア) AS スコア FROM 学生 グループ化 `名前`; 表示される結果は次のようになります。 group_concat(コース,":",スコア) MySQL で列を行に変換し、フィールドをマージする方法についての上記の記事 (必読) が、私が皆さんと共有したいことのすべてです。この記事が皆さんの参考になれば幸いです。また、123WORDPRESS.COM をサポートしていただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux suse11でルートパスワードを忘れた場合に変更する方法の簡単な分析
>>: Linux サーバーのクイックアンインストールとノード環境のインストール (簡単に始められます)
1. 自動フロー属性、要素コンテンツの長さと幅が要素自体の長さと幅を超える場合、スクロールバーが表示...
この記事では、MySQL 8.0.13のインストールと設定のチュートリアルを参考までに紹介します。具...
1. 以前のバージョン yum 削除 docker docker-client docker-cli...
これまでに CSS の基本的なセレクターをいくつか学習しましたが、今日は CSS の複雑なセレクター...
序文MySQL データベースのパスワードを忘れると、データベースに正常にアクセスできなくなり、パスワ...
最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue...
目次文章LOCKパラメータアルゴリズムパラメータCOPY TABLE プロセスIN-PLACEプロセ...
1. コマンドの紹介ln コマンドは、ファイルのリンクを作成するために使用されます。リンクは、ハード...
VScode リモートデバッグ Linux プログラムの問題について見てみましょう。具体的な内容は以...
JS には、文字列をインターセプトするための 3 つのメソッド、 slice() 、 substri...
目次折りたたむ(減らす) for...of の使用whileループの使用折り畳み実装に近い展開する配...
コンテナが起動した後まず管理者にログインして新しいユーザーを作成してください $ docker ex...
目次序文作成手順CentOSベースイメージを作成するコンテナを作成してカスタマイズするカスタムコンテ...
達成される効果:マウスを小さな画像の上に置くと、小さなブロックが小さな画像の上に表示され、この小さな...
Dockerfile は Docker イメージを構築するために使用されるファイルです。コマンドパラ...