0

我有一张如下表:

bill_id   |   date     | bill_amount
1234      | 20-06-2013 | 800
1200      | 18-06-2013 | 1500
1000      | 15-05-2013 | 2000
950       | 10-05-2013 | 2500
900       | 20-04-2013 | 750

我想显示最近 3 个月的账单。如果每月有多个账单,我想显示最近的账单(在示例中,6 月的 bill_id 1234 和 5 月的 1000)。

我可以使用 IN 查询来做到这一点(通过对月份和年份使用 group by 并考虑特定月份和年份的最大 bill_id)。但我的问题是,是否有可能在单个查询中实现相同的输出?

4

1 回答 1

0

是的,使用substring_index()/group_concat()技巧:

select substring_index(group_concat(bill_id order by date, bill_id desc desc), ',', 1) as bill_id,
       max(date) as date,
       substring_idnex(group-concat(bill_amount order by date, bill_id desc), ',', 1) as bill_amount
from bills
group by year(date), month(date)
于 2013-06-21T15:14:39.023 回答