[英]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.