ホームページ >データベース >mysql チュートリアル >MySQL での concat と group_concat の使用の簡単な分析
1. 機能: 複数の文字列を 1 つの文字列に連結します。 。
2. 構文: concat(str1, str2,...)
戻り値は、接続パラメーターによって生成された文字列です。いずれかのパラメーターが null の場合、戻り値は null です。
3. 例:
例 1: tt2 からの情報として concat (id、name、score) を選択します。
行のスコア値が NULL であるため、中央に行があります。 tt2 テーブルが null です。
例 2: 例 1 の結果では、ID、名前、スコアの 3 つのフィールドの組み合わせに区切り文字がありません。区切り文字としてカンマを追加できます。目に見えて~~
でもSQL文を入力するのは大変です、3つのフィールドにカンマを2回入力する必要があります... とても面倒です。方法? ——そして、パラメータ間の区切り文字を指定できる concat_ws() の登場です! ! !
2. concat_ws() 関数
1. 機能: concat() と同様に、複数の文字列を 1 つの文字列に連結しますが、セパレーターを一度に指定できます ~ (concat_ws は concat with separator です)
3. 例:
例 3: concat_ws() を使用して区切り文字をカンマとして指定し、例 2 と同じ効果を実現します:
例 4: 区切り文字を null として指定し、すべての結果が変更されました:
3. group_concat() 関数
序文: group by を使用したクエリステートメントでは、select で指定されたフィールドが group by ステートメントの後に含まれます。 group 基底は集計関数に含まれています。 (Group By について詳しくは、「SQL での Group By の使用に関する簡単な分析」をクリックしてください)。
この例では、同じ名前を持つ人々の中で最小の ID をクエリします。同じ名前を持つすべての人の ID をクエリしたい場合はどうすればよいでしょうか?
もちろん、次のようにクエリすることもできます:
例 6:
しかし、同じ名前が複数回出現する場合、それは非常に直感的ではないように思えます。各名前を 1 回だけ表示し、同じ名前を持つすべての人の ID も表示する、より直感的な方法はありますか? ——group_concat()を使用します
1. 機能: group by で生成された同じグループ内の値を結合し、文字列の結果を返します。
2. 構文: group_concat( [distinct] 接続するフィールド [並べ替えフィールド asc/desc ] [separator 'separator'] )
注: 必要に応じて、重複する値を除外できます。値を並べ替えるには、order by 句を使用できます。区切り文字は文字列値であり、デフォルトはカンマです。
3. 例:
例 7: group_concat() と group by を使用して、同じ名前を持つ人の ID 番号を表示します:
例 8: 上記の ID 番号を大きい順に並べ替え、区切り文字として「_」を使用します:
例 9: 上記のクエリは、名前ごとにグループ化された各グループのすべての ID を表示します。次に、名前でグループ化されたすべてのグループの ID とスコアをクエリする必要があります。
以上がMySQL での concat と group_concat の使用の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。