我有这样的表:
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 | ..
最佳答案
尝试如下:
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;
关于mysql - 重新映射 MYSQL 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20032446/