我有一个包含NULL值的表。此表仅用于存储数值,但第二列除外,其中包含每条记录的时间戳。该表已经使用了一段时间,因此在不同的列中积累了大量的NULL值。这是表格的描述:
+-----------------------------------------+-----------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------------------------+-----------+------+-----+-------------------+----------------+
| results_id | int(11) | NO | PRI | NULL | auto_increment |
| time_stamp | timestamp | NO | | CURRENT_TIMESTAMP | |
| test_col | int(11) | YES | | NULL | |
| test_col-total | int(11) | YES | | NULL | |
| test_col_B | int(11) | YES | | NULL | |
| test_col_B-total | int(11) | YES | | NULL | |
+-----------------------------------------+-----------+------+-----+-------------------+----------------+
12行(0.01秒)
我现在想要更新/更改表格,以便:
我完全坚持这一点,因为一方面我希望我的SQL查询更新到表的新规则,而另一方面更改当前的NULL值,作为新手,这对我当前的理解来说更为中等。
到目前为止,我有:
ALTER TABLE `results` MODIFY `<col_name>` INT(11) NOT NULL;
我会为当前允许NULL值的每一列执行此操作。但是,我不知道如何将存储的NULL值更改为“0”。
任何意见都赞赏。
答案 0 :(得分:2)
将NULL值更改为0 试试
UPDATE results SET `col_name` = 0 WHERE `col_name` IS NULL;
将列更改为NOT NULL并默认为0尝试
ALTER TABLE results MODIFY `col_name` INT(11) NOT NULL DEFAULT 0;
您必须按上述顺序执行此操作,我只是在 http://sqlfiddle.com/上进行了测试
答案 1 :(得分:0)
首先将值更改为0,它们为null:
UPDATE results SET col1 = 0 WHERE col1 IS NULL;
...
然后你可以添加一个0的默认值,只要你在插件上没有为该表提供任何值就会添加它
ALTER TABLE `results` MODIFY `<col_name>` INT(11) NOT NULL DEFAULT 0;