MySQL的limit三种写法

发布时间 2023-09-27 15:02:24作者: 蝈蝈俊

我们使用下面SQL来展示各种limit的写法和效果:


WITH RECURSIVE cte (Number) AS (
    SELECT 1            -- base case returns 1
    UNION ALL
    SELECT Number + 1   -- recursive case returns 1 + previous value
    FROM cte
    WHERE Number < 100
)

SELECT Number
FROM cte
ORDER BY Number 

上面这个SQL会显示 100行数据,分别从1到100。

limit后面跟一个参数

当 limit后面跟一个参数的时候,该参数表示要取的数据的数量。

WITH RECURSIVE cte (Number) AS (
    SELECT 1            -- base case returns 1
    UNION ALL
    SELECT Number + 1   -- recursive case returns 1 + previous value
    FROM cte
    WHERE Number < 100
)

SELECT Number
FROM cte
ORDER BY Number 
limit 2

limit后面跟两个参数

当limit后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量。


WITH RECURSIVE cte (Number) AS (
    SELECT 1            -- base case returns 1
    UNION ALL
    SELECT Number + 1   -- recursive case returns 1 + previous value
    FROM cte
    WHERE Number < 100
)

SELECT Number
FROM cte
ORDER BY Number 
limit 2,5

limit和offset组合使用

当 limit和offset组合使用的时候,limit后面只能有一个参数,表示要取的的数量,offset表示要跳过的数量 。

WITH RECURSIVE cte (Number) AS (
    SELECT 1            -- base case returns 1
    UNION ALL
    SELECT Number + 1   -- recursive case returns 1 + previous value
    FROM cte
    WHERE Number < 100
)

SELECT Number
FROM cte
ORDER BY Number 
limit 2 offset 5