使用sql将同一行的值更改为同一个表中的另一行

时间:2013-02-21 06:00:23

标签: sql

我有这样的表格。

   code  |     name
-------+--------------- 
   102 |    chennai
   101 |    delhi

我想将chennai的代码更改为101,将delhi更改为102.我该怎么做?

2 个答案:

答案 0 :(得分:1)

update table1 set code = 103 where code = 102;

update table1 set code = 102 where code = 101;

update table1 set code = 101 where code = 103;

或者您可以使用CURSOR

答案 1 :(得分:0)

假设没有外键,表名是city,城市名是唯一的,数据库是mysql。 您可以对其他数据库使用相同的概念。  1.删​​除索引。  2.更新值  3.重新创建索引

CREATE TABLE `city` (
    `id` int(11) unsigned NOT NULL,
    `name` varchar(255) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

alter table city drop primary key;
update city, (
    select 101 as id, 'chennai' as name
    union all
    select 102 as id, 'delhi' as name
) newIDs
set city.id = newIDs.id
where city.name = newIDS.name ;
alter table city add primary key (id);