gpt4 book ai didi

sql - 如何在SQL Server中获取行的行ID

转载 作者:行者123 更新时间:2023-12-04 05:07:57 26 4
gpt4 key购买 nike

我有一个表CSBCA1_5_FPCIC_2012_EES207201222743,有两列employee_idemployee_name
我已经使用以下查询

SELECT ROW_NUMBER() OVER (ORDER BY EMPLOYEE_ID) AS ID, EMPLOYEE_ID,EMPLOYEE_NAME 
FROM CSBCA1_5_FPCIC_2012_EES207201222743

但是,它以 employee_id的升序返回行,但是我需要这些行才能将它们插入表中。

最佳答案

SQL Server不会跟踪插入的行的顺序,因此在您当前的表结构下,没有可靠的方法来获取该信息。即使employee_idIDENTITY列,也不能完全依靠它来确定插入顺序(因为您可以使用SET IDENTITY_INSERT ON填补空白,甚至创建重复的ID值)。如果employee_idIDENTITY列,并且您确定不会手动乱序插入行,则应该可以使用查询的这种变体来依次选择数据,最新的是最新的:

SELECT 
ROW_NUMBER() OVER (ORDER BY EMPLOYEE_ID DESC) AS ID,
EMPLOYEE_ID,
EMPLOYEE_NAME
FROM dbo.CSBCA1_5_FPCIC_2012_EES207201222743
ORDER BY ID;

您可以对表进行更改以跟踪新行的此信息,但是您将无法为现有数据派生该信息(在进行此更改时,它们将全部标记为已插入)。
ALTER TABLE dbo.CSBCA1_5_FPCIC_2012_EES207201222743 
-- wow, who named this?
ADD CreatedDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;

请注意,这可能会破坏仅执行 INSERT INTO dbo.whatever SELECT/VALUES()的现有代码-例如您可能需要重新访问代码并定义正确的显式列列表。

关于sql - 如何在SQL Server中获取行的行ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11762700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com