SQL 更新表中的所有条目,但在列上插入不同的值
Posted
技术标签:
【中文标题】SQL 更新表中的所有条目,但在列上插入不同的值【英文标题】:SQL Update all entries from a table but insert different values on thecolumn 【发布时间】:2018-04-26 06:55:40 【问题描述】:我有一个表格,我想在同一列中为所有条目插入不同的值。 该列尚未插入任何值,我想在其中为每个条目插入不同的字符串。 是否可以?如果是的话,你能帮我写一些代码吗? 我知道如何更新列上具有相同值的所有条目:
UPDATE table_name SET column_name = 'your_string';
【问题讨论】:
SQL Update with row_number()的可能重复 双引号用于分隔标识符,例如具有奇怪名称的列,例如"First Name"
。对字符串文字使用单引号,例如 'you_string'
.
添加一些示例表数据和预期结果 - 作为格式化文本,而不是图像。并标记您正在使用的 dbms。
@RaunakThomas 它不是重复的,因为解决方案是迭代并将整数放入列中。我想用字符串设置列的值
每一行的值如何确定?它是基于其他列中的一些现有数据吗?如果是这样,一些示例将非常有帮助。如果不是,这些值是如何定义的?
【参考方案1】:
您可以使用不同的值填充列,并使用它来填充目标列。
考虑以下使用 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 |
+---------+-----------+
【讨论】:
感谢您的回答,但对我的问题没有帮助。 我想从外部来源插入值。我将在那里创建字符串,我只需要查询来填充列 您打算如何确定目标表中的哪一行与外部源匹配? 我知道表中的确切行数。我将创建该数字字符串,并希望在应用查询时将这些值放入该列 您能分享一下您的目标表的结构,以及包含要插入到目标表中的生成字符串的表吗?【参考方案2】: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。
【讨论】:
以上是关于SQL 更新表中的所有条目,但在列上插入不同的值的主要内容,如果未能解决你的问题,请参考以下文章