2013-03-24 30 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

好看!

相关问题