gpt4 book ai didi

MySQL 相同查询/数据的不同结果

转载 作者:行者123 更新时间:2023-11-29 19:10:48 25 4
gpt4 key购买 nike

我有两台运行 MySQL 的服务器。两者都在 window 上。一个是我的本地机器(Windows 7,MySQL 5.6.25,32位),另一个是我的生产网络服务器(Windows 2012,MySQL 5.7.11-log,64位(这就是显示变量向我显示的内容)。

两者的数据相同。我从Windows 7(使用MySQL Workbench)备份了数据,并在2012年的机器上恢复了它。

我在两台机器上运行查询,但得到不同的结果。我有两个表,projects 和projectsnotes,它们之间存在1:m 关系,与projects.id 到projectsnotes.idProject 相关。每个注释都标有日期 (dComment)。查询的目标是仅检索项目信息和最新评论。

这是查询:

select space(1) as cAction,
p.id,
p.iNum,
p.cStatus,
p.cName,
p.cDesc,
ifnull(pl.cNickName, 'UNASSIGNED') as cProjectLeader,
IFNULL(concat (
date_format(pn.dComment, '%Y-%m-%d'),
': ',
pn.cComment
), '') as cComment,
date_format(p.dRequested, '%Y-%m-%d') as dRequested,
date_format(p.dRequired, '%Y-%m-%d') as dRequired,
format(p.nPercentComplete, 2) as nPercentComplete,
p.tLastUpdated,
p.bCompleted,
p.idProjectLeader
from projects p
left outer join projectleaders pl on p.idProjectLeader = pl.id
left outer join (
select idProject,
dComment,
cComment
from projectnotes
order by dComment desc,
tLastUpdated desc
) pn on p.id = pn.idProject
where p.cInstallCode = 'ITM'
and cStatus in ('Pending', 'Active', 'On Hold', 'Completed', 'Cancelled')
and bCompleted = 0
group by iNum
order by iNum;

现在,这是奇怪的部分。当我在 Windows 7 计算机上运行此程序时,我获得了正确的 cComment 值。具体来说:

2017-03-28: Text from note replace

这是最新的注释。当我在 2012 年服务器上运行它时:

2016-05-17: Text from this note replaced too

如果我在 2012 年服务器上单独运行子查询,我会得到正确的值(即,所有注释按相反顺序排列的列表。

哦,这个注释既不是这个项目的第一个注释,也不是最后一个注释。

所以我真的很想知道发生了什么事。对此的任何想法将不胜感激。

提前致谢。

最佳答案

这是预期的行为。

select ...
from projects p
left outer join projectleaders pl on p.idProjectLeader = pl.id
left outer join (...) pn on p.id = pn.idProject
where ...
group by iNum
order by iNum;

由于MySQL对GROUP BY的特殊处理,它不会在该查询上报告错误。但是,您必须记住,由于您不使用聚合,并且 GROUP BY 将消除大量行,因此保留在最终结果集中的行是由相当模糊的标准确定的...

例如:

SELECT a,b FROM t GROUP BY a

将返回哪个 b?在某些 MySQL 版本中,这将是在表 t 中找到的第一个 b 值。如果表 t 以某种方式排序,则可以利用这一点。但我绝对不相信这种行为在版本之间保持不变...另外,请记住 MySQL 可以自由更改您的连接顺序...

关于MySQL 相同查询/数据的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43098729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com