MySQL:如何选择表中的所有行,除了最后一行

时间:2008-11-24 21:48:54

标签: mysql select limits

我有一个有N行的表,我想选择N-1行。

如果可能的话,建议如何在一个查询中执行此操作..?

4 个答案:

答案 0 :(得分:15)

最后一行的ID是否最高?如果是这样,我认为这会奏效:

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

MySQL确实允许当前版本中的子选择,对吧?

但是,在大多数情况下,如果您选择了所有行,然后在应用程序中过滤掉不需要的数据,它可能会表现得更好。

答案 1 :(得分:2)

SELECT DISTINCT t1.columns FROM table t1
INNER JOIN表t2 ON t1.id< t2.id

根据我的经验,MySQL喜欢这种技术,可以追溯到几个版本。

答案 2 :(得分:1)

我在这里看不到的另一种技术是

SELECT * FROM table ORDER BY id DESC LIMIT 10000 OFFSET 1;

这将为您提供由id后代排序的记录,除了第一个,即原始顺序中的最后一个 请注意,使用此方法,将只占用10000条记录,但是此数字可以达到您想要的最高值,但不能省略。
此方法的优点是您可以按照自己的意愿订购。
缺点是它为您提供从上到下排序的记录 最后值得注意的是,这里的其他方法效果很好

答案 3 :(得分:-1)

另一种方法可以是:

SELECT * FROM table WHERE ID <> LAST_INSERT_ID()

参考:http://dev.mysql.com/doc/refman/5.7/en/getting-unique-id.html