3
好吧,我看到奇怪的查询行为从我的一个MySQL服务器。我在三台不同的服务器上运行了以下两个查询,全部使用相同的数据。mysql奇怪的查询行为
SELECT t1.Field1, t1.Field2, t1.Field3,
(SELECT t2.Field1
FROM thetable AS t2
WHERE Field2=t1.Field2 AND Field3=t1.Field3 AND t2.Field1>t1.Field1
ORDER BY Field1
LIMIT 1) AS MinimumResult
FROM thetable AS t1
WHERE t1.UserID=5;
SELECT t1.Field1, t1.Field2, t1.Field3,
(SELECT min(t2.Field1)
FROM thetable AS t2
WHERE Field2=t1.Field2 AND Field3=t1.Field3 AND t2.Field1>t1.Field1) AS MinimumResult
FROM thetable AS t1
WHERE t1.UserID=5;
在三台服务器中的两台上,两个查询都返回相同的结果。第三,我得到了MinimumResult字段的两个不同的结果。第一个查询返回一个小数字。第二个查询返回我期望的和两个查询在其他服务器上返回的结果。
我不知道该如何回应?这是服务器配置问题还是预期行为?
在此先感谢您提供的任何帮助。
尝试使用dosent工作的数据集执行子查询,就像一个测试示例我有一种感觉,这是一个朝着这个方向通用化或有些问题的问题。从它的外观看,子查询的顺序不符合你的期望。 – Jester
是的,我尝试过。如果自行运行,子查询可以正常工作。所有三个数据库上的表的排序规则和存储引擎都匹配。如果有帮助,使用mysqldump导出它们,并通过它创建的脚本加载它们。 – dalto
您确定UserID 5指向所有数据库中的相同记录吗? – Limey