繁体   English   中英

选择MySQL中除了最后5项之外的所有项目

[英]SELECT all but the last 5 items in MySQL

我正在尝试运行一个查询,它将SELECT除表格中的5个项目以外的所有项目。

我目前正在使用以下查询来获取最后5个项目。
SELECT * FROM articles ORDER BY id DESC LIMIT 5

我想要另一个查询来获取所有其他项目,因此排除最后5项。

您可以通过方便地按相反顺序对它们进行排序来选择最后5个项目。

SELECT * FROM articles ORDER BY id DESC LIMIT 5

LIMIT 5 ,实际上,短形式LIMIT 0, 5

您可以使用相同的技巧跳过前5个项目并选择其余项目:

SELECT * FROM articles ORDER BY id DESC LIMIT 5, 1000000

不幸的是,MySQL在跳过前5行后没有提供获取所有行的方法。 您必须始终告诉它要返回多少行。 我在查询中添加了一个大数字(100万)。

对于两个查询,返回的文章将按降序排序。 如果您需要升序,则可以保存第一个查询返回的最小id值,并在第二个查询中使用它:

SELECT * FROM articles WHERE id < [put the saved id here] ORDER BY id ASC

不需要限制第二个查询,您甚至可以根据需要按其他列对记录进行排序。

你可以这样做:

SELECT * FROM articles
ORDER BY id ASC
LIMIT (SELECT count(*)-5 FROM articles)

你也可以使用NOT EXISTS()NOT IN()但我必须看到列名来为你调整sql,如下所示:

SELECT * FROM articles a
WHERE a.id NOT IN(SELECT id FROM articles ORDER BY id DESC LIMIT 5)

也可以使用左连接完成:

SELECT t.* FROM articles t
LEFT JOIN (SELECT id FROM articles ORDER BY id DESC LIMIT 5) s
 ON(t.id = s.id)
WHERE s.id is null

请注意,如果表有多个键(ID列),则必须将其添加到ON子句的关系中。

尝试

SELECT * FROM articles a NOT  EXIST (SELECT * FROM articles b WHERE a.id=b.id ORDER BY id DESC LIMIT 5);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM