我试图将求和的结果存储在一个变量中,以便以后在查询中使用它,但迄今为止没有成功。
我已经试过了,而且效果和我预期的一样:SELECT @pos := 'titi' "c1", @pos "c2";
titi | titi
当我尝试使用一个group by函数时,它不再工作了,它将我的变量设置为最后一个处理过的函数。SELECT c1, @titi := SUM(c2), @titiFROM (SELECT 1 "c1",2 "c2" UNION SELECT 2,3 UNION SELECT 1,4) tGROUP BY c1;
实际产量:
1,6,3号
2,3,3
期望输出:
1,6,6
2,3,3
如何使变量按行保留其值?
最佳答案
如果我没记错的话,这里的问题是不包含聚合函数的列的值是在处理组的第一行时计算的,而赋值@var:=SUM
是在计算聚合值时进行的。
也就是说,您要么只需要在另一个上下文中重复聚合函数,要么如果聚合函数相当复杂,并且您不想重复:a)将所有内容放入子查询中,b)使用类似于IF(COUNT(*), @var, @var)
的内容(这看起来相当老套)
注意:您的查询似乎无效,因为列名应该用反引号引起来。
关于mysql - 使用mysql用户定义的变量与条件分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8869042/