使用 FORMAT 函数时 MySQL 排序

标签 mysql sorting sql-order-by

我有一个查询,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/

相关文章:

mysql - 如何使用一个sql命令同时从一个或多个表中删除

mysql - 如何同步开发和生产数据库

c# - 上下文附加方法异常

JavaScript 排序数组,但保持第二个数组同步

MYSQL 从每个类别中选择一个随机记录

javascript - 在 php 中从 mysql 订购数据时排除引用

php - 使用 MySQL 搜索多个术语

python - 如何过滤掉python中的单词?

c - 冒泡排序不排序

c# - 如何避免 OrderBy - 内存使用问题