我有一个表格active
,表格中的数据如下所示.. 示例数据
id pid chq_date
-------------------------
1 6 2013-07-07
2 4 2013-10-06
3 4 2013-07-06
4 5 2013-01-06
5 13 2013-09-16
6 33 2013-09-08
7 4 2013-02-06
8 13 2013-01-06
9 7 2013-07-06
10 4 2013-08-02
我需要获取每个不同pid的最近即将到来日期的记录来自样本数据的所需输出
id pid chq_date
-------------------------
1 6 2013-07-07
3 4 2013-07-06
5 13 2013-09-16
6 33 2013-09-08
9 7 2013-07-06
我尝试过不同的查询,但没有得到理想的结果。看起来离我最近的查询是
select * from active where chq_date>=sysdate and chq_date in (select
min(chq_date) from active where pid in (select distinct pid from active))
答案 0 :(得分:2)
sashkello作为group by的回答中的一些更改不能以这种方式使用,所以我在内部查询中使用它
select * from active where chq_date in (SELECT MIN(chq_date)
FROM active WHERE chq_date >= SYSDATE GROUP BY pid)
答案 1 :(得分:1)
尝试类似:
SELECT
id,
pid,
MIN(IF(chq_date > SYSDATE, chq_date, NULL))
FROM active
GROUP BY pid
或者,如果您要删除没有即将到来的日期的pid
:
SELECT
id,
pid,
MIN(chq_date)
FROM active
WHERE chq_date > SYSDATE
GROUP BY pid