3
好吧,我看到奇怪的查詢行爲從我的一個MySQL服務器。我在三臺不同的服務器上運行了以下兩個查詢,全部使用相同的數據。mysql奇怪的查詢行爲
SELECT t1.Field1, t1.Field2, t1.Field3,
(SELECT t2.Field1
FROM thetable AS t2
WHERE Field2=t1.Field2 AND Field3=t1.Field3 AND t2.Field1>t1.Field1
ORDER BY Field1
LIMIT 1) AS MinimumResult
FROM thetable AS t1
WHERE t1.UserID=5;
SELECT t1.Field1, t1.Field2, t1.Field3,
(SELECT min(t2.Field1)
FROM thetable AS t2
WHERE Field2=t1.Field2 AND Field3=t1.Field3 AND t2.Field1>t1.Field1) AS MinimumResult
FROM thetable AS t1
WHERE t1.UserID=5;
在三臺服務器中的兩臺上,兩個查詢都返回相同的結果。第三,我得到了MinimumResult字段的兩個不同的結果。第一個查詢返回一個小數字。第二個查詢返回我期望的和兩個查詢在其他服務器上返回的結果。
我不知道該如何迴應?這是服務器配置問題還是預期行爲?
在此先感謝您提供的任何幫助。
嘗試使用dosent工作的數據集執行子查詢,就像一個測試示例我有一種感覺,這是一個朝着這個方向通用化或有些問題的問題。從它的外觀看,子查詢的順序不符合你的期望。 – Jester
是的,我嘗試過。如果自行運行,子查詢可以正常工作。所有三個數據庫上的表的排序規則和存儲引擎都匹配。如果有幫助,使用mysqldump導出它們,並通過它創建的腳本加載它們。 – dalto
您確定UserID 5指向所有數據庫中的相同記錄嗎? – Limey