我有這樣的SQL查詢同樣的sql查詢不同的結果?
SELECT tt.ID_Partenaire, tt.Nom_Societe,tt.Image_Societe, tt.id_activite
FROM affiliate AS a
RIGHT JOIN
(SELECT partenaires.ID_Partenaire,
partenaires.Nom_Societe, partenaires.Image_Societe, partenaires.id_activite,
IFNULL(SUM(c.montant_real),0) AS mt1
FROM partenaires
LEFT JOIN commande AS c
ON partenaires.ID_Partenaire=c.id_partenaire
GROUP BY partenaires.ID_Partenaire
)AS tt
ON a.id_partenaire= tt.ID_Partenaire
GROUP BY tt.ID_Partenaire
ORDER BY (IFNULL(SUM(a.montat),0) + mt1) DESC
LIMIT 20
我有兩個服務器:
- 版本都serveur:5.7.11日誌 - MySQL社區服務器(GPL)-locally-
- 服務器版本:10.1.25-MariaDB-1〜jessie-mariadb.org二進制發行版 - 主機 -
當我在這些服務器上執行它時,它們每個都給我一個不同的結果。
我認爲這個問題是在ORDER BY
作爲一個解決方案,我提出:
SELECT ID_Partenaire, Nom_Societe, Image_Societe, id_activite
FROM (SELECT tt.ID_Partenaire, tt.Nom_Societe,tt.Image_Societe,
tt.id_activite,
(IFNULL(SUM(a.montat),0) + mt1) as mm
FROM affiliate AS a
RIGHT JOIN
(SELECT partenaires.ID_Partenaire,
partenaires.Nom_Societe, partenaires.Image_Societe,
partenaires.id_activite,
IFNULL(SUM(c.montant_real),0) AS mt1
FROM partenaires
LEFT JOIN commande AS c
ON partenaires.ID_Partenaire=c.id_partenaire
GROUP BY partenaires.ID_Partenaire
)AS tt
ON a.id_partenaire= tt.ID_Partenaire
GROUP BY tt.ID_Partenaire
ORDER BY mm DESC
LIMIT 20) AS k
我真的很困惑,因爲MySQL不給我任何錯誤,但給出不同的結果,我還有其他疑問我擔心他對他們也是這樣做的!
檢查,如果兩個服務器使用不同發動機 – Kai
結果有什麼不同?你確實在兩臺服務器上都有相同的數據? – JeffUK
假設'ID_Partenaire'是'partenaires'上的PK,它不應該是一個問題;但如果不是,則應該注意,選擇未分組的非聚合字段可能會產生不同的結果,甚至MySQL系列以外的許多(任何?)RDBMS都不允許這樣做。 – Uueerdo