SQL查询一对多关系中的最新记录

SQL查询一对多关系中的最新记录,sql,postgresql,Sql,Postgresql,我在为语句建立SQL查询时遇到问题,该语句将计算一个表中的行数: ID Date Status_id Parent_id 1 2012-1-1 2 1 2 2012-3-21 1 2 3 2012-3-6 1 1 4 2012-6-11 1

我在为语句建立SQL查询时遇到问题,该语句将计算一个表中的行数:

ID       Date             Status_id     Parent_id
1        2012-1-1         2             1    
2        2012-3-21        1             2  
3        2012-3-6         1             1    
4        2012-6-11        1             3   
5        2012-1-7         2             1    
6        2012-1-5         1             3
声明:

SELECT COUNT(*) 
FROM person 
WHERE date BETWEEN '2012-1-1' AND '2012-1-30' AND status_id=1    
给了我编号
3
,但在这个数量中,是具有相同父项的行,我只希望有唯一的父项进行计数,如果有两行具有相同父项,则只有具有最新日期计数的行。有人能告诉我如何改进查询以使其像我描述的那样工作吗?

试试这个查询

SELECT 
   COUNT(DISTINCT Parent_id) 
FROM 
   person 
WHERE 
   date BETWEEN '2012-1-1' AND '2012-1-30' AND 
   status_id=1 

希望对您有所帮助……

您使用的RMD是什么?(mysql、sql server、oracel)由于日期的关系,它应该会给你数字
0
。我使用的是PostgreSQL数据库,所以每个家长的最大计数是1,对吗?@Mithrand1r顺便问一下,你上面的查询怎么会得到3?以上问题的答案是1对吗?