sql >> Database >  >> RDS >> Mysql

SQL:Selecteer kolom als

Als u een vast aantal taal-ID's heeft, kunt u dit als volgt doen:

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;

Als u de taal-ID's niet van tevoren weet, moet u dynamische SQL gebruiken om de query te construeren en deze vervolgens voor te bereiden en uit te voeren.

Als taal-id dynamisch is:

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. Entiteitskenmerkwaardemodel - Prestatiealternatief?

  2. php - laravel :Hoe om te gaan met tijdoverlap in de database?

  3. Visual Studio - Kan MySql-databasetabel niet koppelen aan DataSet

  4. MySQL SELECT SUM gebaseerd op een andere tabel