【问题标题】:I've got to update a column in one SQL table with a counter stored in another table, and update that table too我必须使用存储在另一个表中的计数器更新一个 SQL 表中的列,并更新该表
【发布时间】:2011-01-28 10:18:59
【问题描述】:

我正在使用 SQL Server 2005(用于测试)和 2007(用于生产)。

我必须使用另一个表中的“最后一条记录 ID”列,在现有列中为我的表中的所有记录添加唯一的记录 ID。所以,我要对我的表做某种UPDATE,但我必须从另一个表中获取“最后一个记录 ID”,增加它,更新那个表,然后更新我的记录。

谁能给我一个如何做到这一点的例子?其他用户可能也在增加计数器。

【问题讨论】:

    标签: sql counter increment


    【解决方案1】:

    如果您要插入一个表,然后更新(ing)下一个表,您可以使用 @@IDENTITY 为您提供第一个表的自动增量 ID。

    例如

    INSERT INTO table1 (description) VALUES ('blah');
    UPDATE table2 SET (tabel1ID = @@IDENTITY) WHERE condition
    

    @@IDENTITY 将为您提供最后插入的行的 ID。

    【讨论】:

    • 谢谢你,JD。但不,我没有插入它。我需要从 Table1 的第 1 行获取“下一个用户 ID”,用“下一个用户 ID + 1”递增和更新 Table1 的第 1 行中的该列,并将其插入表 2 的第 1 行,然后重复下一行表 2 直到没有更多行。但我总是只更新表 1 的第 1 行。
    • 您能否提供更多信息...例如DB Schema 那么我们也许可以提供更多帮助......
    • OK.. 所以我对你的问题的看法(如果有错请告诉我): 1. 你有一个 table1 有一个'userID'列。 2. 你想让 'userID' = userID + 1。 3. 然后你想把这个新的'userID' 插入到表中 2. 你需要使用 SQL 吗?在 foreach 循环中使用辅助语言(例如 C# 或 PHP 或您喜欢的语言)可能更容易实现。如果您需要使用 SQL,请使用“while begin end”循环......在 Google 上的 SQL 和其他语言中,有很多关于“foreach”(以及 SQL 中的“while begin end”)循环的好教程 :) 希望这个有点帮助......如果没有就喊
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多