MYSQL将一行数据的多列值放到另一列的多个行中
在MySQL中,如果你想要将一行数据的多列值放到另一列的多个行中,你可以使用一个辅助表(例如,使用nums表)来生成序列,然后与你的原始表进行联接。
比如下面一行一行数据,包含col1~col5总共5列,现在需要将这5类转换到一列中。
转换前的数据:
转换后的结果:
以下是一个示例:
首先,创建一个辅助的序列表:
CREATE TABLE nums (num INT); INSERT INTO nums (num) VALUES (1),(2),(3),(4),(5);
说明:根据需要转换的列数决定序列(比如需要转换5列,这里就插入5条数据)
然后,假设你有一个原始表original_table,它有多个列需要转换到多行:
CREATE TABLE original_table ( col1 VARCHAR(255), col2 VARCHAR(255), col3 VARCHAR(255), col4 VARCHAR(255), col5 VARCHAR(255) ); INSERT INTO original_table (col1, col2, col3, col4, col5) VALUES ('A', 'B', 'C', 'D', 'E');
现在,你可以使用下面的查询来将这些列值转换到多行:
SELECT num, CASE WHEN num = 1 THEN col1 WHEN num = 2 THEN col2 WHEN num = 3 THEN col3 WHEN num = 4 THEN col4 WHEN num = 5 THEN col5 END new_col FROM ( SELECT 1 id, col1, col2, col3, col4, col5 FROM original_table ) T INNER JOIN ( SELECT 1 id, num FROM nums ) T2 ON T.id = T2.id ;
这将输出如下结果:
请注意,这个例子中nums表只有5个数字,但在实际情况中,你可能需要更多的数字来匹配你要展开的列数。根据你的需求,你可能需要创建一个更大的序列表,或者使用其他方法来生成序列。
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/18543149