MYSQL:删除空单元格

时间:2010-03-04 13:38:25

标签: mysql

我有一张桌子,例如“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"<>'')之类的事情 等等,当然它不起作用。

有什么想法吗? =)

3 个答案:

答案 0 :(得分:2)

SELECT  MAX(col1), MAX(col2), MAX(col3)
FROM    mytable
GROUP BY
        (id - 1) DIV 3

答案 1 :(得分:2)

嗯,我认为模数不会起作用,因为它正在重复..
例如0,1,2,0,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;