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

MySQLのCONCATでGROUP_CONCATを使用する方法

    select id, group_concat(`Name` separator ',') as `ColumnName`
    from
    (
      select 
        id, 
        concat(`Name`, ':', group_concat(`Value` separator ',')) as `Name`
      from mytbl
      group by 
        id, 
        `Name`
    ) tbl
    group by id;
    

    ここで実装されていることがわかります: Sql Fiddle Demo 。まさに必要なもの。

    更新 2つのステップに分割します。最初に、unique [Name、id]に対してすべての値(コンマ区切り)を持つテーブルを取得します。次に、取得したテーブルから、すべての名前と値を各一意のIDに対する単一の値として取得します。これについては、ここで説明されています SQLフィドルデモ (2つの結果セットがあるので下にスクロールします)

    編集 質問を読むのに間違いがありました、私はidだけでグループ化しました。ただし、次の場合は2つのgroup_contactsが必要です(値は名前とIDでグループ化され、次にIDでグループ化されます)。 前の回答はでした

    select 
    id,group_concat(concat(`name`,':',`value`) separator ',')
    as Result from mytbl group by id
    

    ここで実装されていることがわかります: SQLFiddleデモ



    1. PostgreSQLにテーブルが存在するかどうかを確認する5つの方法

    2. MySQLの各グループで最初のレコードを取得する方法

    3. Oracleがタイムスタンプと日付を比較

    4. ゼロ/0の結果をCOUNT集計に含める方法は?