Nếu bạn có một số id ngôn ngữ cố định, thì bạn có thể thực hiện việc này như sau:
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;
Nếu bạn không biết trước id ngôn ngữ, thì bạn cần sử dụng SQL động để tạo truy vấn, sau đó chuẩn bị và thực thi nó.
Nếu languageid là động:
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;