Mysql 以总值计算
我的数据库中有一个具有以下结构的表:Mysql 以总值计算,mysql,Mysql,我的数据库中有一个具有以下结构的表: trans - id - user_id - k_id - left - right 我试图用COALESCE(SUM(left),0)将列left中的总值作为total1。同时选择列right中的总值,并将COALESCE(SUM(right),0)作为total2 对于这一部分,代码正在运行 之后,我想将总和(total1-total2)显示为total 运行此语句时,我得到一个错误: 字段列表中的未知列“total1” 有人知道我如何解决这个问题吗
trans
- id
- user_id
- k_id
- left
- right
我试图用COALESCE(SUM(left),0)将列left
中的总值作为total1
。同时选择列right
中的总值,并将COALESCE(SUM(right),0)作为total2
对于这一部分,代码正在运行
之后,我想将总和(total1-total2)显示为total
运行此语句时,我得到一个错误:
字段列表中的未知列“total1”
有人知道我如何解决这个问题吗
以下是我的完整声明:
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'
在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;
注意,我从中的常量中删除了单引号,其中
。ID通常是数字。数字应该与数字而不是字符串进行比较。如果ID真的是字符串,那么单引号当然是适当和正确的