行转列:
- 使用cross join 的方式
- 使用case-when的方式
列转行:
SELECT user_name, REPLACE ( substring_index(mobile, ',', a.id), char_length( substring_index(mobile, ',', a.id - 1) ) + 1 ), ',', '' ) AS mobile FROM tb_sequence a CROSS JOIN ( SELECT user_name, concat(mobile, ',') AS mobile, length(mobile) - length(REPLACE(mobile, ',', '')) + 1 size FROM user1 b ) b ON a.id <= b.size
以上语句实现的前提是:你需要创建一张tb_sequence序列 表 ,只有一列
CREATE TABLE tb_sequence ( id INT auto_increment NOT NULL, PRIMARY KEY (id) )
实现的场景为:左侧的表的内容,装换为右侧
参考说明:慕课网 mysql开发技巧(二)