Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 以总值计算_Mysql - Fatal编程技术网

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真的是字符串,那么单引号当然是适当和正确的