Php SQL中的条件表达式

Php SQL中的条件表达式,php,sql,mysql,Php,Sql,Mysql,我正在使用MYSQL和PHP。我有一张桌子叫item。它的两个属性是价格和折扣价格。我有如下选择声明: $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语句并包含一个条件表达式,这样:如果折扣价格为0,则它选择价格,否则选择折扣价格。 条件表达式可以在SQL语句中使用吗? 谢谢

我正在使用MYSQL和PHP。我有一张桌子叫item。它的两个属性是价格和折扣价格。我有如下选择声明:

$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语句并包含一个条件表达式,这样:如果折扣价格为0,则它选择价格,否则选择折扣价格。 条件表达式可以在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
从参数列表中选择第一个非空值。也就是说,当折扣价格为空时,它返回价格

如果“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中尝试一下

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实际上,如果某个项目没有折扣价格,则我的表中的值为0.00。0是否算作空值?否,0不算作空值。