我有两个表,一个有进入日期,另一个有生效日期。我需要做的是选择入口日期最接近生效日期的行。我能找到的唯一资源是row_number(),它在MySQL中似乎不起作用。
数据
Table A Table B
id effdate id Aid entrydate
1 2015-10-19 1 1 2015-12-17
2 1 2015-12-18
3 1 2015-12-20
我要做的是选择
id effdate entrydate
1 2015-10-19 2015-12-17
到目前为止,我已尝试在entrydate上使用min(),但它只会超时。
SELECT a.id, a.effdate, b.entrydate
FROM tableA a
JOIN tableB b on a.id = b.Aid
答案 0 :(得分:1)
SELECT a.id, a.effdate, b.entrydate
FROM tableA a
JOIN tableB b on a.id = b.Aid
ORDER BY DATEDIFF(entrydate, effdate) ASC
-- you might want to order here by additional fields to break the ties
LIMIT 1;
答案 1 :(得分:1)
如果输入日期始终大于生效日期,您可以使用以下
select a.id, a.effdate, b.entrydate from aa a, bb b
where a.id = b.aid
and b.entrydate = (select Min(bi.entrydate)
from bb bi
where bi.id = a.id
);