简单记录一下,一个需求:
需要对商品进行排序,查出来的商品有个置顶字段,有个库存字段。
现在需要进行排序,保证置顶的商品在前面。但是库存为0的商品放在后面。
也就是只保证有库存的在前面,没库存的在后面,库存对其他排序没影响。
举例:
商品名称 | 库存 | 是否置顶 |
---|---|---|
三星手机 | 666 | 1 |
小米手机 | 11451 | 1 |
Vivo手机 | 26414 | 0 |
苹果手机 | 0 | 1 |
OPPO手机 | 0 | 0 |
魅族手机 | 0 | 0 |
实现SQL:
SELECT
a.id,
a.product_name,
a.stock,
a.top_sign
FROM
store_product a
WHERE
a.is_deleted = 0
ORDER BY
IF
( a.stock > 0, 1, 0 ) DESC,
a.top_sign DESC;
当然也可以用CASE语句:
SELECT
a.id,
a.product_name,
a.stock,
a.top_sign
FROM
store_product a
WHERE
a.is_deleted = 0
ORDER BY
CASE WHEN a.stock>0 THEN 1 ELSE 0 END DESC,
a.top_sign DESC;
就是一个简单的关于CASE和IF语句的应用。