2

我想根据某些条件从不同列中填充列中的数据,例如,我有一个表:

MyTable( id, area_id, name )

带有样本数据:

10 1 <name>
20 2 <name>
30 3 <name>
40 4 <name>
50 1 <name>
60 2 <name>
70 3 <name>
80 4 <name>

现在我希望将此表更新为

10 1 Area 1
20 2 Area 2
30 3 Area 3
40 4 Area 4
50 1 Area 1
60 2 Area 2
70 3 Area 3
80 4 Area 4

如何在单个查询中实现这一点。

4

3 回答 3

4

由于列name已经存在,请使用CONCAT

UPDATE tableName
SET name = CONCAT('Area ', area_id)

如果您想添加其他列,请阅读文章

于 2012-11-13T09:34:50.397 回答
3

SQLFIDDLEexample 更新您的表:

UPDATE MyTable
SET `name` = CONCAT('Area ', area_id);

插入新列并更新它

ALTER TABLE `MyTable` ADD `new_name` VARCHAR( 50 ) NOT NULL ;

UPDATE MyTable
SET `new_name` = CONCAT('Area ', area_id);

结果:

| ID | AREA_ID |   NAME | NEW_NAME |
------------------------------------
| 10 |       1 | Area 1 |   Area 1 |
| 20 |       2 | Area 2 |   Area 2 |
| 30 |       3 | Area 3 |   Area 3 |
| 40 |       4 | Area 4 |   Area 4 |
| 50 |       1 | Area 1 |   Area 1 |
| 60 |       2 | Area 2 |   Area 2 |
| 70 |       3 | Area 3 |   Area 3 |
| 80 |       4 | Area 4 |   Area 4 |
于 2012-11-13T09:42:37.967 回答
1

添加新列(如评论中所述):

ALTER TABLE MyTable ADD areaName VARCHAR(60);

要使用列中的新值更新现有表name

UPDATE MyTable
SET name = CONCAT('Area ', area_id)
于 2012-11-13T09:37:19.997 回答