我有这样的表:
uid | fid | value 1 | 1 | nameOf1 1 | 2 | surnameOf1 1 | 3 | countryOf1 2 | 1 | nameOf2 2 | 2 | surnameOf2
需要像这样转换/选择它:
uid | name | surname | country 1 | nameOf1 | surnameOf1 | countryOf1 2 | nameOf2 | surnameOf2 | ..
答案 0 :(得分:1)
尝试类似:
SELECT t1.uid, t2.value AS name, t3.value AS surname, t4.value AS country FROM table t1
LEFT JOIN table t2 on t2.uid = t1.uid AND t2.fid = 1
LEFT JOIN table t3 on t3.uid = t1.uid AND t3.fid = 2
LEFT JOIN table t4 on t4.uid = t1.uid AND t4.fid = 3
GROUP BY t1.uid;
或:
SELECT DISTINCT t1.uid, t2.value AS name, t3.value AS surname, t4.value AS country FROM table t1
LEFT JOIN table t2 on t2.uid = t1.uid AND t2.fid = 1
LEFT JOIN table t3 on t3.uid = t1.uid AND t3.fid = 2
LEFT JOIN table t4 on t4.uid = t1.uid AND t4.fid = 3;
答案 1 :(得分:0)
这有点复杂,但你可以这样做:
select distinct uid as uid,
(select value from dataTable as table1
where table1.uid=dataTable.uid and fid = 1) as name,
(select value from dataTable as table2
where table2.uid=dataTable.uid and fid = 2) as surname,
(select value from dataTable as table3
where table3.uid=dataTable.uid and fid = 3) as country
from dataTable group by uid