所以我想按价格订购产品 - ASC
和DESC
,但有些产品会在数据库中填入discountprice
列,如果有的话 - 应该将它们考虑在内,而不是price
字段。
所以目前我有这个:
SELECT * FROM products ORDER BY price ASC
,但我如何为该特定产品的if (discountprice != '' AND discountprice != NULL) then use discount price
条款添加ORDER
之类的内容?
答案 0 :(得分:2)
使用SELECT * FROM products
ORDER BY coalesce(discountprice, price) ASC
选择第一个非空值:
CASE
如果由于某种原因,您还将空字符串设为NULL,请使用常规SELECT * FROM products
ORDER BY CASE when discountprice is NOT NULL
or discountprice != '' THEN discountprice
else price end ASC
:
SELECT * FROM products ORDER BY
case when (discountprice != '' or discountprice != NULL)
then
(price-discountprice)
else
price
end
ASC
答案 1 :(得分:2)
试试这个
SELECT *,(price - discountprice) as order_price FROM products ORDER BY order_price ASC
答案 2 :(得分:2)
创建虚拟列。如果您没有折扣价,则其列必须为0。 按此栏目排序。
<com.facebook.login.widget.LoginButton
xmlns:fb="http://schemas.android.com/apk/res-auto"
fb:com_facebook_login_text="Your Text"
如果需要,您可以转换为整数。
答案 3 :(得分:2)
你可以这样做:
SELECT (price-IFNULL(discountprice,0)) as finalprice FROM products
ORDER BY finalprice ASC
如果您尝试按discountprice
列排序,可以通过两种方式进行排序:
使用IFNULL
:
SELECT * FROM products
ORDER BY IFNULL(discountprice, price) ASC
使用COALESCE
:
SELECT * FROM products
ORDER BY COALESCE(discountprice, price) ASC