gpt4 book ai didi

mysql - 按总值(value)计算

转载 作者:行者123 更新时间:2023-11-29 10:44:49 25 4
gpt4 key购买 nike

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

trans
- id
- user_id
- k_id
- left
- right

我试图获取 left 列中的总值,其中 COALESCE(SUM(left),0) 作为total1。同时选择 right 列中的总值,其中 COALESCE(SUM(right),0) 作为total2

对于该部分,代码正在运行。

之后我想显示SUM(total1 - Total2) AS总计

当我运行此语句时,出现错误:字段列表中存在未知列“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;

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

关于mysql - 按总值(value)计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44793033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com