如何从表中获取最后一行?

时间:2013-11-11 06:55:34

标签: sql sql-server tsql triggers

我尝试了下面的查询但导致多行和[SCOPE_IDENTITY]为NULL。交替是什么?

  SELECT TOP 1000 
    [RTID],xxx,xxx
   FROM [RouteTiming]
    GO
    SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY];
    GO
    SELECT @@IDENTITY AS [@@IDENTITY];
    GO

1 个答案:

答案 0 :(得分:4)

根据服务器版本(SQL Server 2005+),您可以使用OUTPUT子句:

INSERT INTO tablename (column names)
OUTPUT --this is where you put your select statement to get returned IDs etc.
VALUES (values in here, or you can use a select statememt as per usual)

MSDN文章:OUTPUT Clause (Transact-SQL)

如果您在存储过程或函数中,则可以使用INSERTED表(还有一个DELETED表),该表存储在内存中,直到范围完成。
执行插入后,只要它在同一范围内,就可以像插入其他任何其他表一样加入插入的表。我相信插入的表自SQL Server 2000以来一直存在,但绝对是在2005 +。

MSDN示例:Use the inserted and deleted Tables