Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL:Изберете колона като <стойност на друга колона>

Ако имате фиксиран брой езикови идентификатори, можете да направите това като:

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;

Ако не знаете идентификаторите на езика предварително, тогава трябва да използвате динамичен 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Като регистри и букви в MySQL

  2. Преобразуване на дата в име и година на месеца

  3. phpmailer не може да изпраща поща

  4. Недостатъци на цитирането на цели числа в Mysql заявка?

  5. Как да bin произволно в MySQL?