由于某种原因,我认为这两个mysql查询基本上是不同格式的相同的东西,它们会为sum值返回不同的结果,我不完全确定原因。
查询1(返回正确的值)
SELECT sum((getRankint(cs_times.mapid, 1123, 0, 0))) AS rankval
FROM cs_times
INNER JOIN cs_maps ON cs_times.mapid = cs_maps.mapid
WHERE stage =0
AND TYPE =0
AND active =1
AND playerid =1123
AND getRankint(
cs_times.mapid, 1123, 0, 0
) <11
查询2
SELECT @rankval := getRankint(cs_times.mapid, 1123, 0, 0) AS rankval,
sum(@rankval)
FROM cs_times
INNER JOIN cs_maps ON cs_times.mapid = cs_maps.mapid
WHERE stage =0
AND TYPE =0
AND active =1
AND playerid =1123
AND getRankint(
cs_times.mapid, 1123, 0, 0
) < 11
如果我在没有sum函数的情况下并排比较表格,它们会完全相同。然而,总和值是不同的。知道是什么原因引起的吗?感谢。
(同样在查询的where部分有一个冗余函数调用,有没有办法清除它,所以它没有调用该函数两次?)
答案 0 :(得分:0)
如果我在没有sum函数的情况下并排比较表格,它们会完全相同。然而,总和值是不同的。知道是什么导致了这个吗?
这是因为将聚合与行级列值组合在一起。
您的查询只会有一行结果。
getRankint
。
这里计数值是提取的满足的行数
条件。