MySQL查询选择和计算值

时间:2011-10-17 03:32:01

标签: mysql sql select

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'

有没有办法用一个查询做我想要的? 我想按总价格订购结果,但要计算它我必须计算超出限制的使用量。

我知道应该有其他方法来做,使用多个查询,创建视图等。 我只是想知道是否有更简单的查询。

3 个答案:

答案 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
;