这次我有一些问题要解决,所以我来了。
我在数据库中有一个名为test的表,其中包含3个属性(id、id_position、name)。详情请看这里
sqlfiddle
这里我们有组concat的新结果,我给出了新的字段名(result)。我只想将(result)字段设置为新的动态列,后面是(id_position)。示例结果:
+-------------+-----------+----------+-----------+----------+
+ id_position + result1 + result2 + result3 + result4 +
+-------------+-----------+----------+-----------+----------+
+ 1 + name_11 + name_6 + name_5 + name_3 +
+ 2 + name_2 + name_1 + - + - +
+ 3 + name_4 + name_7 + - + - +
+ 4 + name_8 + name_9 + name_10 + - +
+-------------+-----------+----------+-----------+----------+
如果结果为空,则给出一个类似于(-)的符号。请提出解决这个问题的建议,谢谢你的时间
最佳答案
也许这不是最灵活和最漂亮的解决方案,但它对你的4个职位的情况很好:http://sqlfiddle.com/#!2/a3b77/120
SELECT
t1.id_position,
(select name from test where id_position=t1.id_position limit 0,1) AS result1,
(select name from test where id_position=t1.id_position limit 1,1) AS result2,
(select name from test where id_position=t1.id_position limit 2,1) AS result3,
(select name from test where id_position=t1.id_position limit 3,1) AS result4
FROM test t1
GROUP BY t1.id_position
ORDER BY t1.id_position;
关于mysql - 如何使行到动态列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27572811/