Mysql LIMIT不限制我的查询

时间:2017-11-11 10:53:30

标签: mysql limit

为什么以下查询从32-54返回记录而不是LIMIT子句中指定的记录?

SELECT
    info.*,
    type.titulo AS type_name,
    category.titulo AS category_name
FROM infos_infos info
LEFT JOIN infos_categories category
    ON category.id=info.category
LEFT JOIN infos_canais type
   ON type.id=info.type
WHERE
    info.active=1 AND
    type.active=1
GROUP BY info.id
LIMIT 32,48 

3 个答案:

答案 0 :(得分:4)

From the docs它说:

  

LIMIT子句可用于约束SELECT语句返回的行数。

     

使用两个参数,第一个参数指定的偏移量   第一行返回,第二行指定最大数量   要返回的行。初始行的偏移量为0(不是1):

所以你想要它,所以设置LIMIT就像

LIMIT 32, 16 # this will return rows from 32 - 48

回答你的问题"为什么以下查询从32-54返回记录?"这是因为您将开始时间设置为32,并且您没有超过54项。这就是为什么。 LIMIT 32,48将尝试显示32 - 80行!

答案 1 :(得分:2)

https://dev.mysql.com/doc/refman/5.7/en/select.html

LIMIT因为你使用它是一个OFFSET + Count,你可能有少于80(32 + 48)的结果,所以它显示你从偏移32到你的数据结束

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15

答案 2 :(得分:0)

SQL应该是:

SELECT
        info.*,
        type.titulo AS type_name,
        category.titulo AS category_name
    FROM infos_infos info
    LEFT JOIN infos_categories category
        ON category.id=info.category
    LEFT JOIN infos_canais type
       ON type.id=info.type
    WHERE
        info.active=1 AND
        type.active=1
    GROUP BY info.id
    LIMIT 32,16