如何使用包含 100 条记录的表中每行的不同值来更新表中所有行的列

发布于 2024-11-17 18:40:12 字数 83 浏览 1 评论 0原文

我的表包含 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

記柔刀 2024-11-24 18:40:12
UPDATE tablename
   SET columnname = CASE id
                        WHEN 1 THEN 42
                        WHEN 2 THEN 666
                    END

通过此查询,对于 id = 1 的行,columnname 将更新为 42,对于 666 >id=2

UPDATE tablename
   SET columnname = CASE id
                        WHEN 1 THEN 42
                        WHEN 2 THEN 666
                    END

With this query columnname will be updated to 42 for the row with id = 1, and 666 for id = 2

月亮邮递员 2024-11-24 18:40:12

使用自动增量 id 和原始表的列创建一个表。

然后

INSERT INTO new_table (column1, column2,.....) -- refer all columns except autoincrement id
SELECT * FROM old_table

通过与新表连接来更新旧表,假设它是一个关键复合材料或不是区分每一行的关键复合材料

Create a table with an autoicrement id and the columns of the original table.

Then

INSERT INTO new_table (column1, column2,.....) -- refer all columns except autoincrement id
SELECT * FROM old_table

Update the old table by joining with the new, assuming the is a key composite or not that distincts each row

感性 2024-11-24 18:40:12

对此列设置唯一约束。

ALTER TABLE YourTableName
ADD CONSTRAINT uc_ColumnID UNIQUE (ColumnName)

现在,每当您尝试使用重复值更新它时, sql server 不允许:)

也是一个长期运行的场景

Set Unique constraint on this column.

ALTER TABLE YourTableName
ADD CONSTRAINT uc_ColumnID UNIQUE (ColumnName)

Now, whenever you try to update it with duplicate values, sql server will not allow:)

Also a long run scenario

甜点 2024-11-24 18:40:12

如果您使用的是 SQL Server 2005 或更高版本(您没有具体指定......),您可以轻松地使用 CTE(通用表表达式)来实现此目的 - 基本上,您选择您的PK 值,以及从 1 开始计数的计数器,然后将每行的 ColumnName 列设置为计数器的值:

;WITH UpdateData AS 
(
   SELECT 
      PKValue,
      ROW_NUMBER() OVER(ORDER BY .......) AS 'RowNum'
   FROM
      dbo.YourTable
)
UPDATE dbo.YourTable
SET ColumnName = u.RowNum
FROM UpdateData u
WHERE dbo.YourTable.PKValue = u.PKValue

这样,您就可以在 中生成从 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 UpdateData AS 
(
   SELECT 
      PKValue,
      ROW_NUMBER() OVER(ORDER BY .......) AS 'RowNum'
   FROM
      dbo.YourTable
)
UPDATE dbo.YourTable
SET ColumnName = u.RowNum
FROM UpdateData u
WHERE dbo.YourTable.PKValue = u.PKValue

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.

Spring初心 2024-11-24 18:40:12

加载一个 DataTable,比如 dt,其中包含要更新的表的特定行 ID。
然后执行

foreach(DataRow rw in dt.Rows)
{
    update table_name set column_name=desired_value where specific_column=rw
}

load a DataTable say dt with specific row ID of the table which you wanna update.
then execute

foreach(DataRow rw in dt.Rows)
{
    update table_name set column_name=desired_value where specific_column=rw
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文