0

当我使用 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'。我做错了什么?

4

3 回答 3

1

您需要使用“HAVING”代替“WHERE”来查看派生结果。由于 PlannedWeekG 不是数据库中的列,因此“HAVING”是实现这项工作的魔力;)

于 2013-10-18T22:29:20.387 回答
0

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

SELECT 
IF(huxwz_user_orders.year = YEAR(CURDATE()) + 1, huxwz_user_orders.plannedweek + 52, huxwz_user_orders.plannedweek) as PlannedWeekG
HAVING PlannedWeekG > 0
于 2013-10-18T22:29:04.510 回答
0

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

请看这个答案,特别是 SELECT 语句的逻辑处理顺序部分。

于 2013-10-18T22:37:18.190 回答