Как присоединиться на основе максимальной отметки времени в SQL?

Итак, у меня есть такой df:

ID       fruit
001     grapes 
002     apples
002     mangos
003    bananas
004    oranges
004     grapes

И я хочу присоединиться к этому:

 ID                store_time
001   2021-04-02 03:02:00.321  
002   2021-04-02 02:02:00.319
002   2021-04-03 12:02:00.319
002   2021-04-04 13:02:00.312
003   2021-04-02 19:02:00.313
004   2021-04-02 15:02:00.122
004   2021-04-01 11:02:00.121

Итак, все, что я хочу сделать, это присоединиться только к самой последней временной метке. Так что оставьте остальных позади и оставьте только то количество строк, которое есть во фрукте df.

Конечный результат:

ID       fruit   timestamp
001     grapes   2021-04-02 03:02:00.321   
002     apples   2021-04-04 13:02:00.312
002     mangos   2021-04-04 13:02:00.312
003    bananas   2021-04-02 19:02:00.313
004    oranges   2021-04-02 15:02:00.122
004     grapes   2021-04-02 15:02:00.122
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
24
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Агрегируйте во 2-й таблице, чтобы получить самый последний store_time для каждого ID, а затем присоединитесь к 1-й таблице:

SELECT t1.ID, t1.fruit, t2.timestamp
FROM table1 t1 
LEFT JOIN (
  SELECT ID, MAX(store_time) timestamp 
  FROM table2
  GROUP BY ID
) t2 ON t2.ID = t1.ID

Я использовал соединение LEFT на тот случай, если table2 не содержит всех ID из table1.
Если это не так, вы можете изменить его на соединение INNER.

вам нужен подзапрос для максимальной отметки времени

    select a.id, a.fruit, b.max_time
    from my_table_fruit a
    inner  join (
        select id, max(store_time) max_time 
        from my_table_time 

    ) b on b.id = a.id 

Другие вопросы по теме