我的数据库中有一个表格,其结构如下:
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'
答案 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确实是字符串,那么当然,单引号是正确的。