通过if语句定义的列

时间:2013-10-18 22:26:33

标签: mysql sql

当我使用if语句得到这样的结果时:

SELECT 
IF(huxwz_user_orders.year = YEAR(CURDATE()) + 1, huxwz_user_orders.plannedweek + 52, huxwz_user_orders.plannedweek) as PlannedWeekG

当我在我的查询中使用PlannedWeekG时:WHERE PlannedWeekG > 0

它在where子句中给出了一个错误“未知列'PlannedWeekG'。我做错了什么?

3 个答案:

答案 0 :(得分:1)

您需要使用'HAVING'代替'WHERE'来查看派生结果。由于PlannedWeekG不是数据库中的一列,'HAVING'是使这项工作变得神奇的一种方式;)

答案 1 :(得分:0)

您可以在mysql中使用Having子句:

SELECT 
IF(huxwz_user_orders.year = YEAR(CURDATE()) + 1, huxwz_user_orders.plannedweek + 52, huxwz_user_orders.plannedweek) as PlannedWeekG
HAVING PlannedWeekG > 0

答案 2 :(得分:0)

您不能在PlannedWeekG子句上使用计算列WHERE,因为在处理WHERE子句时它仍然不存在。您可以按照其他答案中的建议使用HAVING子句,或者将您的查询用作从派生表中选择的另一个查询的派生表。

请查看this答案,尤其是SELECT语句的逻辑处理顺序部分。