我想要一个mysql查询,在3个月的时间内生成没有记录的数据。按名称限制显示最新的事务组1。
**Sample data (March to May)**
Name Date of Transaction
Robert 2014-03-03
Angel 2014-02-25
Robert 2014-06-03
Daniel 2014-03-11
Angel 2014-05-31
Christine 2014-01-31
Henry 2014-05-05
Henry 2014-06-01
Nicole 2014-03-25
**It should display:**
Name Date of Transaction
Daniel 2014-03-11
Nicole 2014-03-25
Angel 2014-05-31
Henry 2014-06-01
Robert 2014-06-03
这可能吗?这是我的查询,但没有工作
SELECT *
FROM <tablename>
WHERE date <= CURDATE() - INTERVAL 3 MONTH
GROUP BY name
ORDER BY date
DESC
修改
如果没有3个月内的无记录怎么样?
Name Date of Transaction
Christine 2014-01-31
答案 0 :(得分:1)
当您使用group by时,除非使用聚合函数,否则只能在group by子句中显示列。这有帮助吗?
SELECT name, max(dtTransaction)
FROM <tablename>
WHERE date <= CURDATE() - INTERVAL 3 MONTH
GROUP BY name
使用max获取最新日期。
答案 1 :(得分:1)
您可以尝试这样的事情: -
SELECT Name, MAX(Date of Transaction)
FROM <tablename>
WHERE date <= CURDATE() - INTERVAL 3 MONTH
GROUP BY Name
ORDER BY date;