SELECT
if('1000'>plan_limit_max,'1000'-plan_limit_max,0) as 'Overage',
if(`per_hour_cost`='0', `per_period_cost`+'10'*`Overage`, per_hour_cost*720) AS 'Total'
FROM `service_price`
order by Total asc
;
第3行Overage
出现错误
Error Code: 1054. Unknown column 'Overage' in 'field list'
有没有办法用一个查询做我想要的? 我想按总价格订购结果,但要计算它我必须计算超出限制的使用量。
我知道应该有其他方法来做,使用多个查询,创建视图等。 我只是想知道是否有更简单的查询。
答案 0 :(得分:1)
Overage 未定义为查询的一部分,仅作为结果中的列标题。你不能引用那个列,因为它还不存在......你必须使用类似下面的SQL:
SELECT
if('1000'>plan_limit_max,'1000'-plan_limit_max,0) as 'Overage',
if(`per_hour_cost`='0', `per_period_cost`+'10'*if('1000'>plan_limit_max,'1000'- plan_limit_max,0),
per_hour_cost*720) AS 'Total'
FROM `service_price`
order by Total asc
答案 1 :(得分:1)
您可以在子查询中计算Overage
一次:
SELECT Overage,
IF(per_hour_cost = 0, per_period_cost + 10 * Overage, per_hour_cost * 720)
AS Total
FROM (SELECT IF(1000 > plan_limit_max, 1000 - plan_limit_max, 0) AS Overage,
service_price.*
FROM service_price) d;
答案 2 :(得分:0)
在OVERAGE中输入“`”时出错。你必须在OVERAGE中使用''。
SELECT
if('1000'>plan_limit_max,'1000'-plan_limit_max,0) as 'Overage',
if(`per_hour_cost`='0', `per_period_cost`+'10'* 'Overage', per_hour_cost*720) AS 'Total'
FROM `service_price`
order by Total asc
;