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

SQL:列を<別の列の値>として選択します

    言語IDの数が固定されている場合は、次のように実行できます。

    select id,
           max(case when LanguageId = 1 then text end) as "1",
           max(case when LanguageId = 2 then text end) as "2",
           max(case when LanguageId = 3 then text end) as "3"
    from t
    group by id;
    

    言語IDが事前にわからない場合は、動的SQLを使用してクエリを作成し、準備して実行する必要があります。

    languageidが動的である場合:

    select @s = concat('select id',
                       group_concat(concat(', max(case when LanguageId = ',
                                           LanguageId,
                                           ' then text end) as "',
                                           LanguageId, '"'
                                          )
                                   ),
                       ' from t group by id'
                      )
    from (select distinct LanguageId from t) t;
    
    PREPARE stmt1 FROM @s;
    EXECUTE stmt1;
    DEALLOCATE PREPARE stmt1;
    


    1. mysqlコネクタ/c++でsetblobを使用してバイナリデータを設定するとクラッシュが発生します

    2. データベースからのフルカレンダーJavaScriptでのイベントの入力

    3. MySQL-Oracle RANK()OVER(ORDER BYスコアDESC)を実行する方法

    4. JS日時をMySQL日時に変換する