SQL更新表中的所有条目,但在列上插入不同的值

时间:2018-04-26 06:55:41

标签: sql sql-server

我有一张表,我希望在同一列中插入所有条目的不同值 该列尚未插入值,我希望为每个条目插入一个不同的字符串 可能吗?如果是的话,你可以帮我一些代码吗? 我知道如何在列上更新具有相同值的所有条目:

UPDATE table_name SET column_name = 'your_string';

2 个答案:

答案 0 :(得分:0)

您可以使用不同的值填充列,并使用它来填充目标列。

使用MySQL数据库考虑以下示例。

创建表格

CREATE TABLE a (
column1 varchar(20),
column2 varchar(20),
column3 varchar(50)
);

表格人口:

insert into a(column1, column2) values('a','100');
insert into a(column1, column2) values('b','200');
insert into a(column1, column2) values('c','300');

检查表:

select * from a;
+---------+---------+---------+
| column1 | column2 | column3 |
+---------+---------+---------+
| a       | 100     | NULL    |
| b       | 200     | NULL    |
| c       | 300     | NULL    |
+---------+---------+---------+

使用column2填充column3:

update a set column3=concat('value-',column2);

再次检查表格

select * from a;
+---------+---------+-----------+
| column1 | column2 | column3   |
+---------+---------+-----------+
| a       | 100     | value-100 |
| b       | 200     | value-200 |
| c       | 300     | value-300 |
+---------+---------+-----------+

(可选)如果不需要,请删除column2:

alter table a drop column column2;

select * from a;
+---------+-----------+
| column1 | column3   |
+---------+-----------+
| a       | value-100 |
| b       | value-200 |
| c       | value-300 |
+---------+-----------+

答案 1 :(得分:0)

SQL Server支持可更新的CTE和子查询。事实证明这很简单:

with toupdate as (
      select t.*, row_number() over (order by (select null)) as seqnum
      from t
     )
update toupdate
    set col = cast(seqnum as varchar(255));

插入的值是转换为字符串的数字。

更简单的替代方法是使用newid()

update t
    set col = newid();

您可以将id分配给字符串列。