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 に答える