经典的的做法是用 case 语法生成透视表(pivot table)
https://edu.csdn.net/skill/mysql02/mysql-88200dcbd2e848a5a1d74c086d8abe57?category=1186&typeId=80840
不过这个模式只适用列固定的情况,如果列不固定,有些数据库也会给一些辅助函数生成动态列的结果集,用在这种 pivot 查询中。当然也可以自己用一些字符串操作拼出查询,然后用execute query之类的方式去执行,得到最终的结果集。早年做一些MIS应用时经常这么干。不过我个人的工程经验来说,动态列的结果集最好是在应用层构造,性能和维护性都更理想一些。
百度 “mysql行转列”
你可以参考下这篇, 数据库有关键字可实现https://blog.csdn.net/qq_41753340/article/details/120812615
一般id表示主键啊,你搞这么多同id的,然后合并后字段都一样,怎么可能呢
题主是不是理解错意思了,如果有50个字段进行行转列得话那么太费劲了,是不是按照要求说 相同id得存放一列字段中,如果是试一试下面这个。
SELECT userid,GROUP_CONCAT(subject
,":",score)AS 成绩 FROM tb_score
GROUP BY userid
参照这个https://blog.csdn.net/qq_43737121/article/details/121188784