用总值计算

时间:2017-06-28 03:13:22

标签: mysql

我的数据库中有一个表格,其结构如下:

trans
- id
- user_id
- k_id
- left
- right

我正在尝试使用left获取COALESCE(SUM(left),0) as total1列中的总值。同时使用right选择COALESCE(SUM(right),0) as total2列中的总值。

对于那部分代码正在运行。

之后我想展示SUM(total1 - total2) AS total

当我运行此语句时,出现错误: Unknown column 'total1' in field list

有人知道如何解决这个问题吗?

以下是我的完整陈述:

SELECT COALESCE(SUM(left),0) as total1, COALESCE(SUM(right),0) as total2, SUM(total1 - total2) AS total FROM trans WHERE user_id='2' AND k_id='120'

1 个答案:

答案 0 :(得分:1)

在SQL中,您无法在定义它们的SELECT中重用列别名。原因很简单:SQL不保证SELECT

中表达式的评估顺序

所以,重复一下表达式:

SELECT COALESCE(SUM(left), 0) as total1,
       COALESCE(SUM(right), 0) as total2,
       (COALESCE(SUM(left), 0) - COALESCE(SUM(right), 0)) as total
FROM trans
WHERE user_id = 2 AND k_id = 120;

请注意,我从WHERE中的常量中删除了单引号。 Ids通常是数字。数字应该与数字而不是字符串进行比较。如果id确实是字符串,那么当然,单引号是正确的。