提问者:小点点

mysql sql case语句为不同的条件提供相同的值


我正在W3School页面中尝试一个简单的案例查询。

http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_groupby_2

当我运行下面的查询时,我总是为所有的范围值“over”。如果价格低于500,则应显示“under”。

SELECT 
(o.Quantity* p.Price) as price,
case price when price< 500 
           then 'under' 
           else 'over' 
           end as range 
 FROM OrderDetails o 
 inner join Products p 
 on (o.ProductID = p.ProductID)

共1个答案

匿名用户

由于price列存在于Products表中,因此它正在使用该值

不能在同一select语句中引用列别名price,需要重复price计算

你还混合了两种大小写的表达方式

你有

case price when price <500

您应该使用

case when (o.Quantity* p.Price) < 500