dtwye28880 2012-07-25 05:02
浏览 56
已采纳

mySQL语句ORDER BY多列

If I have two columns, prices (full_price, sales_price), and these columns has numbers in them. I know that sql statements can do multiple order by's but how does it work when these columns have values in them?

("SELECT * FROM table ORDER BY full_price,sales_price DESC")

How do I accomplish so it will pick the smallest value of the two columns? and it will place the data in order based on the chosen column between full_price and sales_price?

Note: sometimes sales_price will have no value.

Thanks

Edit:

Example

id    full_price        sales_price
1      23                 42           
2      342                200
3      1
4      10                 8

What I'm trying to do is with these numbers, I can output data associated with the lowest price.

The order should be:

3,4,1,2

Reason:

3: 1
4: 8
1: 23
2: 200
  • 写回答

3条回答 默认 最新

  • dongtuwu8548 2012-07-25 05:15
    关注

    Assuming that your blank sales_price is a NULL and that full_price cannot be NULL:

    select ...
    from ...
    where ...
    order by case
        when sales_price is null then full_price
        else least(full_price, sales_price)
    end
    

    You probably want to add a secondary sort key to get consistent and sensible results from ties.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 为什么我写出来的绘图程序是这样的,有没有lao哥改一下
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败