2016-12-05 6 views
1

У меня есть две таблицы, одна из которых имеет дату записи, а другая - с датой вступления в силу. Что мне нужно сделать, так это выбрать строку: entrydate ближе всего к дате вступления в силу. Единственный ресурс, который я могу найти, это 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, но это будет просто тайм-аут.

SELECT a.id, a.effdate, b.entrydate 
FROM tableA a 
JOIN tableB b on a.id = b.Aid 
+1

Как вы хотите обрабатывать связи, если один является 1 дата более, а другой 1 дата меньше ? – xQbert

+1

То, как вводится дата, entrydate всегда будет после effdate – user2168066

ответ

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

Если дата поступления всегда больше, чем даты вы можете использовать следующие

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 
        ); 

 Смежные вопросы

  • Нет связанных вопросов^_^