我有这样的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