的(運行在MySQL的MS Azure雲版本 - CleadDB)MySQL的LIMIT歸國incorect設置行
我有一個簡單的查詢:
SELECT idx, date_added FROM my_table ORDER BY idx ASC LIMIT 100752, 10
我期待着得到旁邊的IDX後10條記錄100752(如果有的話)。但是我得到完全不同的結果,即:
我驗證記錄存在,所以我再次運行查詢,這一次,我知道了記錄有即:
SELECT idx, date_added FROM my_table ORDER BY idx ASC LIMIT 102366, 10
但我再次獲得以下不匹配的行。
我知道我可能做一些愚蠢的。幫助讚賞。
編輯/更新: 我遵循下面的一些建議,並通過使用特定的WHERE謂詞而不是LIMIT函數來測試結果。請看下面的結果。兩個查詢都應該返回相同的結果 - 或者我期望的結果。
TEST 1:
SELECT idx, date_added FROM attachments ORDER BY idx ASC LIMIT 67805, 20
TEST 2:
SELECT
idx, date_added
FROM attachments
WHERE
idx >=67805 and idx <67825
ORDER BY idx ASC
我希望兩者都是相同的,但事實並非如此。
SOLUTION: LIMIT不關心主自動遞增鍵。它關心行數(不管它們的索引如何),所以即使idx是SORTed - 當某些行缺失(意味着過去有一些刪除),它將根據刪除的行數來抵消結果。 Thx全部。
運行:'SELECT MAX(IDX),從attachments' COUNT(*),看看結果 – RIKI
@OTARIKI是THX,並且不返回任何內容! WTH? – Milan
@GurV你是認真的嗎? – Milan