sql >> データベース >  >> RDS >> Mysql

GROUP_CONCATの番号付け

    数年後、select内の変数の変更を放棄する必要があります ステートメント、MySQL 8以降、ウィンドウ関数を使用した標準的な方法を使用できます:

    with base as (
          select   dep, 
                   empnam,
                   count(*) over (partition by dep order by empnam) num
          from     t)
    select   dep,
             group_concat(concat(num, '.', empnam) separator ', ') emps
    from     base
    group by dep
    

    db-fiddle を参照してください。

    元の回答(2016)

    これはアプリケーション側で実行できますが、MySQL5.7では可能です。次のクエリでは、名前を何か、たとえば部門( dep と呼んでいます)でグループ化すると仮定します。 )。これは、新しいグループごとにカウンターが1から始まることを示すためです。

    select   dep, 
             group_concat( 
                 concat(@i := if (@grp = dep, @i + 1, if(@grp := dep,1,1)), '.', empnam) 
                 separator ', ') emps
    from     t,
             (select @i := 0, @grp := '') init
    group by dep;
    

    SQLフィドル を参照してください。 または db-fiddle 。

    テーブル名は必ずfromに入力してください 句、およびグループ化する実際のフィールドを使用します。グループ化するフィールドが複数ある場合は、 @iに割り当てられた式 変更する必要があります。たとえば、グループを定義する値を連結することができます。

    2文字の区切り文字を使用することで、各名前の間にスペースを確保できます。



    1. 2つの列から値を選択して同じテーブルの列に挿入します

    2. MySQLドロップインデックス

    3. 配列をストアドプロシージャに渡します

    4. 一致した単語の数を数える