我有以下查詢:爲什麼'ORDER BY'需要從MySQL連接中獲取正確的結果?
SELECT t.ID, t.caseID, time
FROM tbl_test t
INNER JOIN (
SELECT ID, MAX(TIME)
FROM tbl_test
WHERE TIME <=1353143351
GROUP BY caseID
ORDER BY caseID DESC -- ERROR HERE!
) s
USING (ID)
看來如果我使用ORDER BY
在內部聯接,我只得到正確的結果。這是爲什麼?我正在使用ID作爲連接,所以順序不應該有效。 如果我通過刪除命令,我會從數據庫中得到太舊的條目。 ID是主鍵,caseID是一種具有多個條目並具有不同時間戳的對象。
你能用文字解釋你想要做什麼嗎? –
你需要在你的子查詢中使用'GROUP BY'' ID'列。 MySQL允許你正在做的事情,但返回不可預知的結果... – bernie
你依靠MySQL的非標準和非保證'group by'行爲。 –