Выберите две таблицы с различной конфигурацией

введите описание изображения здесь

table1 имеет только индексный столбец, а таблица2 содержит только версии.

Я хочу выбрать каждый индекс и его последнюю версию. (желтые клетки)

В столбце table2 есть столбец datetime, чтобы узнать, какая из них самая последняя.

Когда table1.idx = table2.belongTo, как объединить таблицы с одним запросом?

Ответы

Ответ 1

Изменить; Исправлен ответ, чтобы вернуть все столбцы из таблицы2.

Сначала вы должны получить вторую таблицу, выбрав max (datetime), а затем присоединитесь к состоянию, которое вы дали.

Здесь вторая таблица t2 создаст строку_имя на основе значения max(datetime) для каждого BelongTo. Благодаря этому answer для него.

select t1.*,t2.idx,t2.belongTo,t2.datetime1
from table1 t1 
inner join 
(
    select t11.idx,t11.belongTo,t11.datetime1,count(*) as row_number from 
    table2 t11
    inner join table2 t12
    on t11.belongTo=t12.belongTo
    and t11.datetime1 <= t12.datetime1
    group by t11.belongTo,t11.datetime1
) t2 /*this table will create row_number based on max datetime value for each belongTo*/
on t1.idx=t2.belongTo
where t2.row_number=1

Смотрите демоверсию SQL Fiddle здесь

http://sqlfiddle.com/#!9/e5ada/10