簡體   English   中英

可以使用子查詢在 MySql 查詢中分配 LIMIT 值嗎?

[英]Can use a subquery to assign LIMIT value in a MySql query?

我需要在沒有順序的情況下提取表的最后一行。 我試試這個,但不要 function:

SELECT * 
FROM contabilidad.emp001_series
LIMIT (SELECT COUNT(*)-10 AS TOTAL FROM contabilidad.emp001_series)

我需要自然順序的結果,不能使用 ORDER BY

不可以。不允許使用子查詢。

此外,SQL 表中沒有“自然”順序。 SQL 表表示無序集。

最好的辦法是進行反向排序並從第 11 行開始:

select s.*
from contabilidad.emp001_series s
order by id desc
limit 999999999 offset 10;

如果你想要一組任意的 id,你也可以使用:

select s.*
from contabilidad.emp001_series s
where id < (select s2.id
            from contabilidad.emp001_series s2
            order by s2.id desc
            limit 1 offset 10
           );

這兩個都假設您有一個指定排序的某種列。

https://dev.mysql.com/doc/refman/8.0/en/select.html has detailed documentation about MySQL's SELECT statement including all its clauses.

它說:

LIMIT 子句可用於限制 SELECT 語句返回的行數。 LIMIT 接受一個或兩個數字 arguments,它們都必須是非負 integer 常量,但以下情況除外:

  • 在准備好的語句中,可以使用?指定 LIMIT 參數? 占位符標記。

  • 在存儲的程序中,可以使用整數值的例程參數或局部變量來指定 LIMIT 參數。

表達式,包括子查詢,在 LIMIT 子句中沒有作為合法參數提及。

一個簡單的解決方案是在兩個查詢中完成您的任務:第一個獲取 COUNT(),然后在包含 LIMIT 的第二個查詢中將該值用作常量值。

並非每項任務都需要在單個 SQL 語句中完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM