mysql中选择,mysql从选择中选择

I have this query:

SELECT DATE( a.created_at ) AS order_date, count( * ) as cnt_order

FROM `sales_order_item` AS a

WHERE MONTH( a.created_at ) = MONTH( now())-1

GROUP BY order_date

which will return result something like this (snapshot only otherwise will return per 31 days):

order_date cnt_order

2012-08-29 580

2012-08-30 839

2012-08-31 1075

and my full query is selecting based on above selection:

SELECT order_date

, MAX(cnt_order) AS highest_order

FROM (

SELECT DATE (a.created_at) AS order_date

, count(*) AS cnt_order

FROM `sales_order_item` AS a

WHERE MONTH(a.created_at) = MONTH(now()) - 1

GROUP BY order_date

) AS tmax

But it result :

order_date highest_order

2012-08-01 1075

Which has the date wrong and always pick the first row of date where it suppose 2012-08-31. Maybe this is a simple error that I dont know. So how to get the date right point to 2012-08-31? Any help would be great.

解决方案

You could try ordering the sub query result set; something like:

SELECT

DATE (a.created_at) AS order_date,

COUNT(*) AS cnt_order

FROM

`sales_order_item` AS a

WHERE

MONTH(a.created_at) = MONTH(now()) - 1

GROUP BY

order_date

ORDER BY

cnt_order DESC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值