mysql检查3个月内没有记录,组限制为1显示最后一笔交易

时间:2014-06-03 03:40:54

标签: php mysql sql

我想要一个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

2 个答案:

答案 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;