数年後、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フィドル
を参照してください。 または
テーブル名は必ずfrom
に入力してください 句、およびグループ化する実際のフィールドを使用します。グループ化するフィールドが複数ある場合は、 @iに割り当てられた式 変更する必要があります。たとえば、グループを定義する値を連結することができます。
2文字の区切り文字を使用することで、各名前の間にスペースを確保できます。