2013-03-24 23 views
1

下一步比較我有這些記錄:我想設置`amount`爲`-1`如果不存在,用`-1`

Order 
---------- 
id amount 
1 10 
2 NULL 
3 20 

我想設置amount-1如果不存在,下一步與-1比較。

我寫這篇文章:

SELECT 
    id, 
    COALESCE(o.amount, -1) AS amount2 
FROM Order o 
WHERE amount2 = -1 

,但這個錯誤:

#1054 - Unknown column 'amount2' in 'where clause' 

我要退貨:

Order 
---------- 
id amount2 
2 -1 

回答

2

你不能在WHERE使用列別名條款。

試試這個:

SELECT 
    id, 
    COALESCE(o.amount, -1) AS amount2 
FROM Order o 
WHERE COALESCE(o.amount, -1) = -1 

An alias can be used in a query select list to give a column a different name. You can use the alias in GROUP BY, ORDER BY, or HAVING clauses to refer to the column

從這裏引:http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

0

我認爲,

SELECT ID,AMOUNT2 FROM(SELECT ID,COALESCE(金額,-1)AMOUNT2 FROM order)n WHERE n.amount2 = -1

好看!

相關問題