【问题标题】:ORDER BY percentage is not workingORDER BY 百分比不起作用
【发布时间】:2014-01-13 16:08:16
【问题描述】:

我在 MySQL 中进行查询,结果未按百分比排序。如何强制按百分比排序?它按total_sold 排序,而不是按百分比排序。

代码如下:

     SELECT in_disassembly.car_id, 
            in_disassembly.cost, 
            IFNULL(SUM(product_sold.product_total_price),0) AS total_sold,
            concat((IFNULL(SUM(product_sold.product_total_price),0)
                            /in_disassembly.cost * 100)) AS percentage_sold
       FROM in_disassembly
 INNER JOIN product_sold ON product_sold.product_car_id = in_disassembly.car_id
      WHERE in_disassembly.car_id > $start_id AND in_disassembly.car_id < $end_id
   GROUP BY in_disassembly.car_id 
   ORDER BY percentage_sold

固定代码

SELECT in_disassembly.car_id, in_disassembly.cost, IFNULL(SUM(product_sold.product_total_price),0) AS total_sold, ROUND((IFNULL(SUM(product_sold.product_total_price),0)/in_disassembly.cost * 100),0) AS percentage_sold
           FROM in_disassembly
           INNER JOIN product_sold ON product_sold.product_car_id = in_disassembly.car_id
           WHERE in_disassembly.car_id > $start_id AND in_disassembly.car_id < $end_id GROUP BY in_disassembly.car_id ORDER BY percentage_sold DESC

【问题讨论】:

  • ORDER BY percent_sold +0 请注意,CONCAT 没有任何用处。连接总是可以在应用程序代码中完成。
  • 您知道您正在使用GROUP BY 的非标准 MySQL 扩展,对吧?这会产生奇怪的结果。阅读:dev.mysql.com/doc/refman/5.1/en/group-by-extensions.html

标签: mysql join sql-order-by


【解决方案1】:

ORDER BY percent_sold 后您缺少 ASC 或 DESC

【讨论】:

  • 应该没问题,默认是asc。
【解决方案2】:

您正在使用 CONCAT 在那里创建一个字符串,因此它将被排序为字符串。即 1 后 11 后 2。

【讨论】:

  • 谢谢你是对的,现在它正确地把这个号码变成了一个interget。
【解决方案3】:

尝试不将百分比连接到字符串,它应该可以工作。

【讨论】:

    猜你喜欢
    • 2018-06-21
    • 1970-01-01
    • 2011-09-21
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多