如何使用SQL Server读取最后一行

rp.*_*rp. 82 sql sql-server

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

该表在唯一键上编制索引 - "底部"键值表示最后一行.

Dar*_*der 166

如果您使用的是MS SQL,可以尝试:

SELECT TOP 1 * FROM table_Name ORDER BY unique_column DESC 
Run Code Online (Sandbox Code Playgroud)

  • 如果您在DB中有500万条记录怎么办?: - \ (16认同)
  • 如果表在排序列上建立了索引,则SQL只会读取表的最后一行。无需昂贵的排序或全表扫描。 (2认同)
  • @Sri 您将执行“SELECT TOP 1000 * FROM table_name ORDER BY column_name DESC”,并应输出最后 1000 条记录。 (2认同)

Ada*_*rce 22

select whatever,columns,you,want from mytable
 where mykey=(select max(mykey) from mytable);
Run Code Online (Sandbox Code Playgroud)

  • 如果`mykey` 是唯一标识符,则此方法无济于事 (2认同)

wil*_*urd 17

您需要在表中使用某种唯一标识列,例如自动填充主键或日期时间列(最好是主键).然后你可以这样做:

SELECT * FROM table_name ORDER BY unique_column DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)

ORDER BY column告诉它根据该列的数据,以rearange结果,并且DESC告诉它扭转结果(从而把最后一个第一).之后,LIMIT 1告诉它只传回一行.

  • MSSQL不使用LIMIT (4认同)
  • 哇,苛刻,原来的问题甚至没有具体说SQL Server.即使SQL Server使用不同的单词来描述相同的概念,上述解决方案也是完全合法的.+1 (4认同)

lio*_*ssi 10

如果你的一些id是有序的,我假设你的数据库中会有一些订单

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


小智 5

我认为下面的查询将适用于 SQL Server,在没有任何可排序列的情况下具有最大性能

SELECT * FROM table 
WHERE ID not in (SELECT TOP (SELECT COUNT(1)-1 
                             FROM table) 
                        ID 
                 FROM table)
Run Code Online (Sandbox Code Playgroud)

希望你已经理解了...:)