-6 mysql
我有一个mysql表,其中一列如下:
1
2
3
4
5
6
7
A
B
C
Y
...
Run Code Online (Sandbox Code Playgroud)
我需要将它转换为4列表,如下所示:
| 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | A |
| B | C | Y | ...|
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
ALTER TABLE tbl
ADD COLUMN col1 CHAR(1),
ADD COLUMN col2 CHAR(1),
ADD COLUMN col3 CHAR(1),
ADD COLUMN col4 CHAR(1);
SET @rn = 0;
INSERT INTO tbl (col1, col2, col3, col4)
SELECT SUBSTRING(GROUP_CONCAT(a.col ORDER BY a.rn), 1, 1),
SUBSTRING(GROUP_CONCAT(a.col ORDER BY a.rn), 3, 1),
SUBSTRING(GROUP_CONCAT(a.col ORDER BY a.rn), 5, 1),
SUBSTRING(GROUP_CONCAT(a.col ORDER BY a.rn), 7, 1)
FROM (
SELECT col, @rn:=@rn+1 AS rn
FROM tbl
) a
GROUP BY CEIL(a.rn / 4);
ALTER TABLE tbl DROP COLUMN col;
DELETE FROM tbl
WHERE col1 IS NULL AND
col2 IS NULL AND
col3 IS NULL AND
col4 IS NULL;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1054 次 |
| 最近记录: |