簡體   English   中英

Mysql查詢中的雙訂單

[英]Double order in Mysql query

我在SQL查詢中遇到有關訂購的問題。

我在“產品”表中有2個字段(“價格”和“ in_stock”)。 我想要做的是按這2個字段對查詢結果進行排序-按“ in_stock”而不是“ price”。 但是(!)重要的一件事是命令'in_stock'為boolen。 例如,表為:

Name       | Price | in_stock |
----------------------------------|
Product1   | 100   |    9     |
Product2   | 200   |    0     |
Product3   | 500   |    4     |
Product4   | 500   |    0     |
Product5   | 300   |    2     |

所以正確的順序結果是:

Product1 - 100, 9
Product5 - 300, 2
Product3 - 500, 4
Product2 - 200, 0
Product4 - 500, 0 

第一步-按庫存訂購產品-如果產品缺貨,則必須在列表末尾。 按價格對產品排序后-從最低到最高。

您可以通過在ORDER子句中添加兩列來按兩列排序:

ORDER BY in_stock DESC, price ASC

您可以在order by子句中使用條件:

select name, price, in_stock
from yourtable
order by in_stock = 0, price

這將首先訂購有庫存的產品(無論多少),然后按價格訂購。


或者,您可以使用case語句對結果進行排序:

order by case when in_stock > 0 then 0 else 1 end, price

排序不只是添加2個order子句,還需要額外的大小寫,當需要進行如下操作以達到所需結果集時

select * from table_name 
order by case when in_stock = 0 then 1 else 0 end , price,in_stock desc ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM