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
4

2 回答 2

2

您不能在WHERE子句中使用列别名。

尝试这个:

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

可以在查询选择列表中使用别名来为列指定不同的名称。您可以在 GROUP BY、ORDER BY 或 HAVING 子句中使用别名来引用列

从这里引用: http: //dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

于 2013-03-24T04:56:38.073 回答
0

我认为,

SELECT id,amount2 FROM (SELECT id, COALESCE(amount, -1)amount2 FROM order)n WHERE n.amount2=-1

好看!

于 2013-03-24T05:08:08.587 回答