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 订单项在我的查询中不起作用的主要内容,如果未能解决你的问题,请参考以下文章