mysql - 按条件排序到字段

标签 mysql sql sorting

我想改变字段函数中的order by子句,但我不知道这是否可能。

这是一个例子:

**TABLE DISCOUNTS**
category    offer
A           0
B           0
C           1
D           1
F           0

product_id  category    price
       1      A         100
       2      B         300
       3      C         250
       4      C         150
       5      D         200
       6      B         200
       7      F         250

我愿意选择所有但已订购的产品,首先是它们是否是报价(我想先显示报价),然后我想按类别对它们进行分组并按价格排序。

问题出在优惠上,这里按类别分组并不重要,因为优惠不会太多,直接按价格排序更有意义。

所以这是我得到的输出:

product_id  category    price       offer
4            C          150         1
3            C          250         1
5            D          200         1
1            A          100         0
6            B          200         0
7            F          250         0
2            B          300         0

虽然我想获得不同的订单(仅按价格排序报价):

product_id  category    price       offer
4            C          150         1
5            D          200         1
3            C          250         1
1            A          100         0
6            B          200         0
2            B          300         0
7            F          250         0

我正在使用的查询是:

select * from Products p
left join Discounts d on p.category = d.category
order by offer desc, p.category, price 

这里是 fiddle

这里最好的选择是什么? 谢谢。

最佳答案

我认为您只需要从 order by 中删除 category:

select *
from Products p left join
     Discounts d
     on p.category = d.category
order by offer desc,
         (case when offer = 0 then category end),
         price ;

关于mysql - 按条件排序到字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30456975/

相关文章:

php - Google 饼图无法从数据库中获取数据

mysql - 如何获取mysql中存储为数组的字符串数据

java - MySQL "No operations allowed after statement closed"

c# - ServiceStack.Ormlite.MySql SqlJoinBuilder 无效转换异常

Java swing在计算时重新绘制: animating sorting algorithm

java - 如何按 POJO 属性降序排列列表?

php - 使用 PHP 查询 Mysql 数据库时,我只得到 50 行中的 1 行

mysql - 使用 INSERT ... SELECT 防止锁等待超时

php - 无法查询工作

javascript - 了解 Javascript .sort 参数