我有一张桌子,例如“mytable”。它有几列:col1,col2,col3。其中有一些数据,如下所示:
id col1 col2 col3 1 aasdas 2 acxvxc 3 dgdgdff 4 hfgdgh 5 jmjkh 6 dfgdfgd 7 bcbxcb
出于某种原因,我需要表格,格式如下:
id col1 col2 col3 1 aasdas acxvxc dgdgdff 2 hfgdgh jmjkh dfgdfgd 3 bcbxcb
我以为我可以做INSERT INTO "mytable" ("col1") VALUES (SELECT "col1" FROM "mytable" WHERE "col1"<>'')
之类的事情
等等,当然它不起作用。
有什么想法吗? =)
答案 0 :(得分:2)
SELECT MAX(col1), MAX(col2), MAX(col3)
FROM mytable
GROUP BY
(id - 1) DIV 3
答案 1 :(得分:2)
GROUP BY (id - 1) / 3
所以你得到:0,0,0,1,1,1,2,2,2,...... 并且选择并合并3个连续行。
但我不太确定是否可以在GROUP BY子句中使用算术运算,因为通常只能按单列分组
[编辑]
我已经测试了一些东西,对于我(mysql),GROUP BY中的除法/模数将不起作用
但我有一些似乎对我有用的东西:
SELECT `id`, MAX(`column1`) AS `col1`, MAX(`column2`) AS `col2`, MAX(`column3`) AS `col3` FROM
( SELECT ROUND((`id`-2) / 3, 0) AS `id`, MAX(`col1`) AS `column1`, MAX(`col2`) AS `column2`, MAX(`col3`) AS `column3` FROM `test` GROUP BY `id` ) AS `temp`
GROUP BY `id`
玩得开心:)
答案 2 :(得分:0)
为了删除空单元格,请提供以下简单查询:
delete from [table_name] where [col1] and [col2] and [col3] = ' ';
这将删除三列中的所有空单元格。确保在执行此操作之前设置auto commit = 0;