[英]same sql query different results ?
我有這個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
我有兩個服務器:
當我在這些服務器上執行它時,每個服務器都給我不同的結果。
我認為問題出在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不會給我任何錯誤,但是會給出不同的結果,我還有其他查詢,而且我擔心他會為他們做同樣的事情!
您可以使用解釋報告找到區別。 只需運行explain extended SELECT ID_Partenaire, Nom_Societe...
。
在逐個訂單之后添加限制。 'limit'和'order by'在'order by'發生之前處於同一級別'limit'完成,因此給出不同的結果
嘗試這樣的事情
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
) AS k LIMIT 20
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.