2017-11-11 130 views
0

爲什麼以下查詢返回32-54中的記錄,而不是在LIMIT子句中指定的記錄?Mysql 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 

回答

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行!

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 
+1

的結束,這將給予32 + 22 = 32 54 - 不是32至48想 –

2

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

LIMIT,你使用它是一個OFFSET +計數,你可能有小於80(32 + 48)的結果,所以它顯示了從偏移32,直到你的數據

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

@caramba打我吧:) - 我應該刪除? –

+0

如果你想保持10分就離開它。我會很高興你的upvote。 – caramba