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

时间:2013-04-23 07:51:21

标签: 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             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,但是这个数量是具有相同父级的行,我希望只计算唯一的父级,如果有两个同一父级的行,则只有最新日期计数的行。任何人都可以给我一个提示,我可以像我描述的那样改进查询工作吗?

1 个答案:

答案 0 :(得分:2)

尝试此查询

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

希望它有所帮助......