MySQL 使用 FORMAT 函数时排序
MySQL Sorting when using FORMAT function
我有一个 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-abetical 排序。如果你想让它们按数字排序,你需要有两列,格式化的和未格式化的。请记住,这通常最好在您的应用程序层中完成。
我有一个 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-abetical 排序。如果你想让它们按数字排序,你需要有两列,格式化的和未格式化的。请记住,这通常最好在您的应用程序层中完成。