SQL中的条件表达式

时间:2010-03-05 12:03:17

标签: php sql mysql

我正在使用MYSQL和PHP。我有一个名为item的表。它的两个属性是价格和折扣价。我有SELECT语句如下:

$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语句中使用条件表达式吗? 谢谢! :)

3 个答案:

答案 0 :(得分:5)

试试这个:

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时,它返回价格。

如果'null'值为0.00,则可以使用:

SELECT
    C.cart_id,
    I.item_id,
    C.quantity,
    IF(I.discounted_price > 0, I.discounted_price, I.price) AS price
    ...

也就是说,如果折扣价大于零,请使用它,否则使用正常价格。

答案 1 :(得分:0)

在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。

答案 2 :(得分:0)

这样的东西
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

如果您使用的是MSSQL,请使用IsNull