簡體   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