我有这些记录:

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

最佳答案

不能在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

09-11 09:40