如何读取SQL Server的最后一行

使用SQL Server读取最后一行的最有效方法是什么?

该表是索引在一个唯一的键 – “底部”键值代表最后一行。

如果你使用MS SQL,你可以尝试:

SELECT TOP 1 * FROM table_Name ORDER BY unique_column DESC 
 select whatever,columns,you,want from mytable where mykey=(select max(mykey) from mytable); 

您需要在表中使用某种唯一标识的列,如自动填充主键或date时间列(最好是主键)。 那么你可以这样做:

 SELECT * FROM table_name ORDER BY unique_column DESC LIMIT 1 

ORDER BY column告诉它根据该列的数据重新排列结果,而DESC告诉它将结果颠倒(因此将最后一个结果放在前面)。 之后, LIMIT 1告诉它只返回一行。

如果你的一些id是为了,我假设你的db中会有一些命令

SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE)

我试图在SQl服务器2008年的SQL查询中使用最后一个,但它给这个错误:“最后一个”不是一个公认的内置函数名称。

所以我最终使用:

 select max(WorkflowStateStatusId) from WorkflowStateStatus 

得到最后一行的Id。 也可以使用

 Declare @i int set @i=1 select WorkflowStateStatusId from Workflow.WorkflowStateStatus where WorkflowStateStatusId not in (select top ( (select count(*) from Workflow.WorkflowStateStatus) - @i ) WorkflowStateStatusId from .WorkflowStateStatus) 

我认为下面的查询将适用于最高性能的SQL Server,没有任何可sorting的列

 SELECT * FROM table WHERE ID not in (SELECT TOP (SELECT COUNT(1)-1 FROM table) ID FROM table) 

希望你已经明白了… 🙂

尝试这个

 SELECT id from comission_fees ORDER BY id DESC LIMIT 1 

你可以使用last_value: SELECT LAST_VALUE(column) OVER (PARTITION BY column ORDER BY column)...

我在我的一个数据库中testing它,它按预期工作。

您也可以在这里查看de文档: https : //msdn.microsoft.com/en-us/library/hh231517.aspx

为了检索MS SQL数据库2005的表的最后一行,您可以使用以下查询:

 select top 1 column_name from table_name order by column_name desc; 

注意:要获取MS SQL数据库2005表的第一行,可以使用以下查询:

 select top 1 column_name from table_name; 
 SELECT * from Employees where [Employee ID] = ALL (SELECT MAX([Employee ID]) from Employees) 

这是如何获得最后一个logging,并更新Access数据库中的字段。

UPDATE compalints SET tkt = addzone &'-'& customer_code &'-'& sn where sn in (select max(sn) from compalints )

如果你没有任何有序的列,你可以使用每行的物理ID:

 SELECT top 1 sys.fn_PhysLocFormatter(%%physloc%%) AS [File:Page:Slot], T.* FROM MyTable As T order by sys.fn_PhysLocFormatter(%%physloc%%) DESC 

如果你有一个Replicated表,你可以在clientDatabase中有localDatabase和Identity = 2000的Identity = 1000,所以如果你捕捉到最后一个ID,你可能会发现最后一个来自客户端,而不是当前连接数据库的最后一个。 所以返回最后连接的数据库的最好方法是:

 SELECT IDENT_CURRENT('tablename') 
 SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE) 

我很确定这是:

 SELECT last(column_name) FROM table 

因为我使用类似的东西:

 SELECT last(id) FROM Status