[英]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.