我想運行此查詢如何選擇最後但從MySQL表10行
select *
from table
order asc
limit N;
其中N是行的總數減去10
SELECT COUNT(*) FROM (SELECT * FROM table)
返回總作爲189所以,在這種情況下,我想我的限制是179
我想運行此查詢如何選擇最後但從MySQL表10行
select *
from table
order asc
limit N;
其中N是行的總數減去10
SELECT COUNT(*) FROM (SELECT * FROM table)
返回總作爲189所以,在這種情況下,我想我的限制是179
如果順序並不重要,你可以使用失調的limit
:
注意,有一個「直到結束表」沒有實際價值。 MySQL Documentation建議使用「一些大數」作爲第二個參數。
SELECT *
FROM table1
order by ID DESC
LIMIT 10, 999999999999999
如果你想按升序你以後可以應用不同的排序:
SELECT
*
FROM
(SELECT *
FROM table1
ORDER BY ID DESC
LIMIT 10, 999999999999999) x
ORDER BY
ID ASC
不確定是否最有效的,但如果您只有一個字段作爲主鍵,這應該工作。
select *
from T1
where
T1.id not in (
select top(10) id
from T1
order by id desc
)
order by
id;
它會通過您的訂單得到最後一行,然後您可以通過密鑰排除。
編輯:
更重要的是,不是沒有,你可以使用一個左外連接。
select
T1.*
from T1
left outer join (select top(10) id from Enums_Tables order by id desc) as T2
on
T1.id = T2.id
where
T2.id is null;
謝謝,非常感謝 – user1183367
創造性的答案!您也可以使用存儲過程來定義OP正在查找的限制,但是我懷疑這超出了請求/超出範圍的範圍。 – nickhar
是的,在存儲過程(或PHP)中,您可以先查詢計數以確定限制。這甚至可能會更快。另一種可能性,特別是從PHP使用時,只是查詢所有內容並忽略最新的10行。但是,我認爲單個查詢中的解決方案是首選,除非它使查詢過於複雜或太慢。 – GolezTrol