我有一张有N行的表格,我想选择其中N-1行。
如果可能的话,请提供如何在一个查询中完成此操作的建议..?
最后一行是否具有最高的ID?如果是这样,我认为这会起作用:
SELECT * FROM TABLE WHERE ID != (SELECT MAX(ID) FROM TABLE)
当前版本的MySQL确实允许使用子查询,对吗?
然而,在大多数情况下,如果您选择所有行并在应用程序中过滤掉不需要的数据,可能会提高性能。
这里没有列出的另一种技术是
SELECT * FROM table ORDER BY id DESC LIMIT 10000 OFFSET 1;
SELECT DISTINCT t1.columns FROM table t1
INNER JOIN table t2 ON t1.id < t2.id
根据我的经验,MySQL非常喜欢这种技巧,这个技巧已经被使用了好几个版本。
DECLARE rowsNr INT DEFAULT 0;
SET rowsNr = SELECT (count(*) AS 'TOTAL_ROWS' FROM TABLE;
SET rowsNr = rowsNr -1;
SELECT * FROM Table WHERE ... LIMIT rowsNr;
另一种方法是:
SELECT * FROM table WHERE ID <> LAST_INSERT_ID()
参考资料:http://dev.mysql.com/doc/refman/5.7/en/getting-unique-id.html