gpt4 book ai didi

mysql - 在同一查询中重用计算字段

转载 作者:太空宇宙 更新时间:2023-11-03 11:23:47 25 4
gpt4 key购买 nike

我有这个问题。

SELECT carte.nome, sum(amount) AS total, (1500-sum(amount)) AS residuo 
FROM movimenti_carta JOIN carte ON movimenti_carta.banca=carte.id
WHERE data BETWEEN '2019-05-01' AND '2019-05-31'
GROUP by banca

这个查询的目标是在一段时间内求和一些金额(sum(amount))。我还将此金额的下限设置为 1500,因此我想在第三个字段中进行计算。我试过了

SELECT carte.nome, sum(amount) AS total, (1500-total) AS residuo 
FROM movimenti_carta JOIN carte ON movimenti_carta.banca=carte.id
WHERE data BETWEEN '2019-05-01' AND '2019-05-31'
GROUP by banca

但 mysql 提示 totale 不是已知字段(它是派生字段)。第一个查询有效,但效率不高。我缺少什么才能让第二个工作?

最佳答案

您可以使用公用表表达式 (CTE):

WITH cte_query AS (
SELECT carte.nome AS nome, sum(amount) AS total
FROM movimenti_carta JOIN carte ON movimenti_carta.banca=carte.id
WHERE data BETWEEN '2019-05-01' AND '2019-05-31'
GROUP by banca
)

SELECT nome, total, (1500- total) AS residuo
FROM cte_query

子查询也可以:

SELECT nome, total, (1500- total) AS residuo 
FROM (
SELECT carte.nome AS nome, sum(amount) AS total
FROM movimenti_carta JOIN carte ON movimenti_carta.banca=carte.id
WHERE data BETWEEN '2019-05-01' AND '2019-05-31'
GROUP by banca
) A

关于mysql - 在同一查询中重用计算字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56357349/

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