单独的group_concat()结果

时间:2013-08-22 12:21:15

标签: mysql group-concat

我正在尝试使用以下方式获得5个客户的最新订单时间:

SET SESSION group_concat_max_len = 99;
select o.customer_id, substring_index(m.orders,',', 1) as order1,
    (case when numc >=2 then substring_index(substring_index(m.orders, ',', 2), ',', -1)end) as order2,
    (case when numc >=3 then substring_index(substring_index(m.orders, ',', 3), ',', -1)end) as order3,
    (case when numc >=4 then substring_index(substring_index(m.orders, ',', 4), ',', -1)end) as order4,
    (case when numc >=5 then substring_index(substring_index(m.orders, ',', 5), ',', -1)end) as order5
    from orders o,
         (select group_concat(date order by date desc) as orders, count(*) as numc
          FROM orders) m
where country_id='27' 
group by customer_id

但它正在为所有客户返回sysdate。

我在哪里做错了?

1 个答案:

答案 0 :(得分:0)

我不确定“sysdate for all customers”是什么意思。但是,join并没有达到预期效果。

只需进行一次聚合:

select o.customer_id, substring_index(group_concat(date order by date desc),',', 1) as order1,
    (case when count(*) >=2 then substring_index(substring_index(group_concat(date order by date desc), ',', 2), ',', -1)end) as order2,
    (case when count(*) >=3 then substring_index(substring_index(group_concat(date order by date desc), ',', -1)end) as order3,
    (case when count(*) >=4 then substring_index(substring_index(group_concat(date order by date desc), ',', 4), ',', -1)end) as order4,
    (case when count(*) >=5 then substring_index(substring_index(group_concat(date order by date desc), ',', 5), ',', -1)end) as order5
    from orders o
where country_id='27' 
group by customer_id