如何将 sum(field_name) 存储在 MySql Select 语句中的变量中?

kar*_*108 1 mysql variables select

我试图将特定字段的总和存储在一个变量中,例如@data := sum(field_name)MySQL Select 语句。

以下是我的查询的确切示例:

SELECT a.id, @data1:=sum(b.amount) amount, @data1 as returned_val
FROM tbl_table1 a 
LEFT JOIN tbl_table2 b ON b.acount_id=a.id
GROUP BY a.id
Run Code Online (Sandbox Code Playgroud)

请注意,我将 存储sum(b.amount)到一个变量@data1并尝试将其显示在另一行中,但从未按我的预期工作。

有没有其他方法可以做到这一点?

Dev*_*art 5

不要在带有 GROUP BY 子句的 SELECT 语句中使用变量。

从文档:

注意:在 SELECT 语句中,每个表达式仅在发送到客户端时才计算。这意味着在 HAVING、GROUP BY 或 ORDER BY 子句中,您不能引用涉及在 SELECT 列表中设置的变量的表达式。

使用子查询来实现这一点 -

SELECT t.id, @data1:=t.amount, @data1 AS returned_val FROM (
    SELECT a.id, SUM(b.amount) amount
    FROM tbl_table1 a 
    LEFT JOIN tbl_table2 b ON b.acount_id=a.id
    GROUP BY a.id
  ) t
Run Code Online (Sandbox Code Playgroud)