mysql 订单项在我的查询中不起作用

Posted

技术标签:

【中文标题】mysql 订单项在我的查询中不起作用【英文标题】:mysql order items not working in my query 【发布时间】:2020-04-28 15:13:30 【问题描述】:

我有下面的代码,但我的查询没有按预期排序项目。

我的列被声明为DOUBLE

查询:

Select VendorName, format(SUM(Order_Quantity*Net_price),2) as Total_Purchase 
from purchases 
group by VendorName 
order by Total_Purchase desc;

【问题讨论】:

您按字符串排序(因为 Format function 输出字符串)。字符串排序不同于数字排序。而是按SUM(Order_Quantity*Net_price) 排序 - 即按实际数值排序,而不是它的格式化演示版本。 P.S.我认为在大多数情况下,您的 SQL 查询应该只输出原始数字。任何展示性的东西,例如添加逗号等,都应该由正在向用户进行数据最终展示的任何工具/应用程序来完成。 【参考方案1】:

Format 函数返回一个字符串,因此排序不符合预期。您可以使用 round 函数获得相同的效果,而无需将其转换为字符串。

Select VendorName, ROUND(SUM(Order_Quantity*Net_price),2) as Total_Purchase 
from purchases 
group by VendorName 
order by Total_Purchase desc;

编辑:如果你真的需要格式化,你可以使用这样的东西:

select VendorName, format(Total_Purchase_Int, 2) as Total_Purchase
from (
  Select VendorName, ROUND(SUM(Order_Quantity*Net_price),2) as 
  Total_Purchase_Int 
  from purchases 
  group by VendorName 
  order by Total_Purchase desc
) as temp_purchase_table;

【讨论】:

除了它不会添加逗号,这大概是 OP 想要的 是的。如果需要,我们也可以通过将其包装在选择查询中来获取格式。【参考方案2】:

您可以选择format(SUM(Order_Quantity*Net_price),2)order by SUM(Order_Quantity*Net_price) desc

Select VendorName, format(SUM(Order_Quantity*Net_price),2) as Total_Purchase 
from purchases 
group by VendorName 
order by SUM(Order_Quantity*Net_price) desc;

【讨论】:

以上是关于mysql 订单项在我的查询中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

查询在 Mysql 数据库中不起作用

引发错误在 MySQL 触发器中不起作用

HIbernate 批量插入或更新在 Spring Boot 中不起作用

mysql:内部查询在 selectif 语句中不起作用

更新查询在 mysql 工作台中不起作用

SQL 查询在最新版本的 MySQL 中不起作用