使用mysql用户定义的变量和group by条件

Spr*_*dzy 2 mysql variables group-by

我试图将一个和的结果存储在一个变量中,以便在查询中使用它到目前为止没有成功.

  • 我试过了,它就像我预期的那样工作: SELECT @pos := 'titi' "c1", @pos "c2";

titi | titi

  • 当我尝试使用按功能分组时,它不再起作用,它将我的变量设置为最后处理的函数.

SELECT c1, @titi := SUM(c2), @titi FROM (SELECT 1 "c1",2 "c2" UNION SELECT 2,3 UNION SELECT 1,4) t GROUP BY c1;

实际产量:

1,6,3

2,3,3

期望的输出:

1,6,6

2,3,3

我该怎么做才能使变量在每行的基础上保持其值?

new*_*ver 5

如果我没记错的话,这里的问题是当处理组的第一行时计算不包含聚合函数的列的值,而在@var:=SUM计算聚合值时进行赋值.

也就是说,你要么只需要重复聚合函数在其他情况下,或者如果聚合函数是相当复杂的,并且你不想重复:1)把一切都放在一个子查询,B)使用类似IF(COUNT(*), @var, @var)(这看起来相当哈克)

PS您的查询似乎无效,因为列名称应引用反引号.