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

派生結果を確認するには、「WHERE」の代わりに「HAVING」を使用する必要があります。PlannedWeekG は DB の列ではないため、'HAVING' はこれを機能させるための魔法です ;)

于 2013-10-18T22:29:20.387 に答える
0

Havingmysqlで句を使用できます。

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

句が処理されるときにまだ存在しないためPlannedWeekG、句で計算列を使用することはできません。他の回答で提案されているように句を使用するか、派生テーブルから選択する別のクエリでクエリを派生テーブルとして使用できます。WHEREWHEREHAVING

この回答、特に SELECT ステートメントの論理処理順序の部分を見てください。

于 2013-10-18T22:37:18.190 に答える