【问题标题】:sql function last() is not a recognized functionsql 函数 last() 不是一个可识别的函数
【发布时间】:2023-03-05 01:25:01
【问题描述】:

我正在尝试在我的 sql server 2008 DB 上使用 Last() 函数来提取表中的最后一条记录。 更具体地说,我使用的查询是:

select Last(Id_Number) as id from table1

我得到的异常以这种方式开始并在很久之后继续......但重点在第一行:

http://prntscr.com/1d4o6y

我能做什么?

【问题讨论】:

  • select max(id_number) as id from table1 有什么问题

标签: sql sql-server database exception


【解决方案1】:

SQL Server 不支持LAST。您可以使用SCOPE_IDENTITY@@IdentityIDENT_CURRENT(‘table1')`。例如:

SELECT IDENT_CURRENT('table1') AS Id

或者,如果您不使用 IDENTITY 列并手动插入 ID。你可以使用MAX

SELECT MAX(Id_Number) AS Id
FROM Table1

【讨论】:

  • SCOPE_IDENTITY 优于 @@IDENTITY@@IDENTITY 将从触发器中获取值; SCOPE_IDENTITY 仅显示您所做的更改,这几乎可以肯定是您想要的。
  • 选择 IDENT_CURRENT('table1') 作为 ID
  • @Joe - 将 SCOPE_IDENTITY 添加到答案中。
  • 而且MAX(Id_Number)IDENT_CURRENT('table1') 都会有竞争条件——他们不一定会接受刚刚做出的改变;他们会了解任何人所做的最新更改。如果多个更新很快发生,您可以使用其他人插入的 ID,而不是您自己的。
  • @Joe - 您假设他们想要在 OP 声明表中的最后一条记录时插入的最后一个 id....
【解决方案2】:

如果你想要最后一条记录并且你有一个标识列(或最大值代表最后一条记录的列):

select top 1 t.*
from t
order by id desc;

【讨论】:

    猜你喜欢
    • 2012-08-29
    • 2017-02-08
    • 2017-10-19
    • 1970-01-01
    • 2014-06-12
    • 2014-01-25
    • 2013-03-14
    • 2017-04-16
    • 1970-01-01
    相关资源
    最近更新 更多