2015-11-02 53 views
0

我试图从SUMED列使用下面的查询基于我的查询记录进行排序:MySQL的排序不排序正确的数据

SELECT o.id_customer, CONCAT(c.firstname, ' ', c.lastname) AS 'name', 
    COUNT(o.id_customer) AS 'repeat', FORMAT(SUM(o.total_products),2) AS 'amount' 
FROM ps_orders AS o 
LEFT JOIN ps_customer AS c ON o.id_customer = c.id_customer 
WHERE o.current_state IN (2,4,5) 
AND o.invoice_date BETWEEN '2015-01-01' AND '2015-12-31' 
GROUP BY o.id_customer 
ORDER BY amount DESC 

上面的查询没有返回正确的数据,更具体返回的记录未正确排序。

任何人都可以指向正确的方向吗?任何帮助深表感谢。

干杯

+1

你期待什么,你会得到什么?你能举一个例子吗? – Jacob

回答

1

您格式化量与FORMAT方法

FORMAT返回的字符串。

您的查询由数据类型的字符串,而不是数量

+0

我稍后会接受你的回答。你说得对,我不应该使用FORMAT。 – Jeremy

0

你可以尝试使用子查询:

SELECT * 
FROM (
    SELECT o.id_customer, CONCAT(c.firstname, ' ', c.lastname) AS 'name', 
     COUNT(o.id_customer) AS 'repeat', FORMAT(SUM(o.total_products),2) AS 'amount' 
    FROM ps_orders AS o 
    LEFT JOIN ps_customer AS c ON o.id_customer = c.id_customer 
    WHERE o.current_state IN (2,4,5) 
    AND o.invoice_date BETWEEN '2015-01-01' AND '2015-12-31' 
    GROUP BY o.id_customer 
) AS o 
ORDER BY amount DESC