如何使用包含 100 条记录的表中每行的不同值来更新表中所有行的列
我的表包含 100 条记录,我需要为这 100 条记录中的每条记录更新一个具有新值(每条记录的差异值)的列。我该如何执行此操作。用于更新值的列不是主键。
my table contains 100 records and i need to update a column with new values(diff value for each record) for each of the 100 records .How can i do this. the column to update the values is not primary key.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
通过此查询,对于
id = 1
的行,columnname
将更新为42
,对于666
>id=2With this query
columnname
will be updated to42
for the row withid = 1
, and666
forid = 2
使用自动增量 id 和原始表的列创建一个表。
然后
通过与新表连接来更新旧表,假设它是一个关键复合材料或不是区分每一行的关键复合材料
Create a table with an autoicrement id and the columns of the original table.
Then
Update the old table by joining with the new, assuming the is a key composite or not that distincts each row
对此列设置唯一约束。
现在,每当您尝试使用重复值更新它时, sql server 不允许:)
也是一个长期运行的场景
Set Unique constraint on this column.
Now, whenever you try to update it with duplicate values, sql server will not allow:)
Also a long run scenario
如果您使用的是 SQL Server 2005 或更高版本(您没有具体指定......),您可以轻松地使用 CTE(通用表表达式)来实现此目的 - 基本上,您选择您的PK 值,以及从 1 开始计数的计数器,然后将每行的
ColumnName
列设置为计数器的值:这样,您就可以在
中生成从 1 到 100 的序列RowNum
字段CTE 的值,并且您正在为基础表设置这个唯一值。If you're on SQL Server 2005 or newer (you didn't exactly specify.....), you could easily use a CTE (Common Table Expression) for this - basically, you select your PK value, and a counter counting up from 1, and you set each row's
ColumnName
column to the value of the counter:With this, you're generating a sequence from 1 through 100 in the
RowNum
field of the CTE, and you're setting this unique value to your underlying table.加载一个 DataTable,比如 dt,其中包含要更新的表的特定行 ID。
然后执行
load a DataTable say dt with specific row ID of the table which you wanna update.
then execute