我有一个查询,SUMS不同的值,然后使用ORDER BY对结果进行排序。
每当我使用 FORMAT 格式化结果时,我都会得到与不使用格式时不同的排序。
例如:
订购无格式:2827.0000、1668.0000、663.1000
订购格式:663.10、2,827.00、1,668.00
什么可能导致此行为?
这是完整的查询:
SELECT
FORMAT( ( (Sum(CASE WHEN YEAR(order_date) = 2015 THEN total END) / 100) - (SELECT COALESCE( ( SUM(total) / 100), 0)
FROM returns WHERE customer = orders.customer AND YEAR(return_dat) = 2015) ), 2) AS anual
FROM orders
WHERE 1 GROUP BY customer ORDER BY anual DESC
最佳答案
对格式化字符串进行排序将导致 ASCII 字母排序。如果您希望它们按数字排序,则需要有两列:格式化的列和未格式化的列。请记住,这通常最好在应用程序层中完成。
关于使用 FORMAT 函数时 MySQL 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28906795/