如何选择表中的最后一行?
我知道我可以选择最后一个SELECT item FROM table ORDER BY id DESC LIMIT 1
,但我想选择ALL而不是最后一个。
我该怎么做?
选择一定金额并使用ASC
将无效,因为我不知道有多少行。
我考虑过进行行计数并获取该数量并选择-1并使用ORDER BY id ASC
但是有更简单的方法吗?
感谢。
答案 0 :(得分:7)
最简单的方法是丢弃应用程序中的行。您可以使用计算的限制在SQL中执行此操作。将其计算为(SELECT COUNT(*) FROM T) - 1
。
或者:
SELECT *
FROM T
EXCEPT
SELECT TOP 1 *
FROM T
ORDER BY id ASC
排除最后一行。
答案 1 :(得分:5)
如果Id是唯一的,您可以按如下方式执行:
SELECT ...
FROM MyTable
WHERE Id < (SELECT MAX(Id) FROM MyTable)
答案 2 :(得分:0)
由于LIMIT无法获取参数,因此您有两个选项 - 构建动态查询(请参阅此帖子了解更多详细信息 - passing LIMIT as parameters to MySQL sproc)或在应用程序中对其进行过滤。
答案 3 :(得分:-1)
这样的事情应该有效
select *
from table
where id not in (SELECT id FROM table ORDER BY id DESC LIMIT 1)