SQL中的条件表达式
问题描述:
我正在使用MYSQL和PHP。我有一个称为物品的表格。它的两个属性是价格和折扣price.I有SELECT语句如下:SQL中的条件表达式
$sql =
'SELECT C.cart_id,I.item_id,C.quantity, I.discounted_price,I.price
FROM cart C, item I
WHERE I.item_id = C.item_id';
我想修改该SQL语句,并包括一个条件表达式这样的:如果discounted_price为0,它会选择其他的价格,discounted_price被选中。 在SQL语句中可以使用条件表达式吗? 谢谢! :)
答
试试这个:
SELECT
C.cart_id,
I.item_id,
C.quantity,
COALESCE(I.discounted_price, I.price) AS price
FROM
cart C,
item I
WHERE
I.item_id = C.item_id
COALESCE
选择从参数列表中的第一个非空值。即,当discount_price为NULL时,它返回价格。
如果你的“空”值是0.00,你可以使用这个:
SELECT
C.cart_id,
I.item_id,
C.quantity,
IF(I.discounted_price > 0, I.discounted_price, I.price) AS price
...
也就是说,如果折扣价大于零,使用,否则使用正常的价格。
答
在SQL Server中,这将是:
SELECT C.cart_id,I.item_id,C.quantity, CASE WHEN I.discounted_price IS NULL THEN I.price ELSE I.discounted_price END AS price
FROM cart C, item I
WHERE I.item_id = C.item_id
你可以给在MySQL的一个尝试。
+0
谢谢!我会尝试它 – chupinette 2010-03-05 12:16:06
答
喜欢的东西
SELECT C.cart_id,I.item_id,C.quantity,
IfNull(I.discounted_price,I.price) as Price
FROM cart C, item I
WHERE I.item_id = C.item_id
使用ISNULL如果您使用MSSQL
事实上,如果一个项目没有折扣价,该值是在我的表0.00。 0计为空吗? – chupinette 2010-03-05 12:15:20
不,0不计为空。 – sgmoore 2010-03-05 12:46:22
非常感谢Tatu Ulmanen! :) – chupinette 2010-03-05 18:28:40