Получить максимальную дату и соответствующую строку из трех таблиц - PullRequest
0 голосов
/ 06 октября 2019

MariaDB Версия: 10.1.40-MariaDB

У меня есть 3 таблицы Как и A, B, C все три таблицы имеют столбцы "update_date" и "update_emp_id". Теперь я пытаюсь получить максимальное значение update_date с update_emp_id среди всех трех таблиц

, например, Таблица "A"

+----+------+------+------+-------+
| id | update_date |update_emp_id |
+----+------+------+------+-------+
|  1 | 2019-09-05  |  5117        |
|  2 | 2019-09-07  |  5118        |
|  3 | 2019-09-09  |  5117        |
|  4 | 2019-09-11  |  5118        |
|  5 | 2019-09-10  |  5119        |
+----+------+------+------+-------+

Таблица "B"

+----+------+------+------+-------+
| id | update_date |update_emp_id |
+----+------+------+------+-------+
|  1 | 2019-09-08  |  5117        |
|  2 | 2019-09-07  |  5118        |
|  3 | 2019-09-10  |  5117        |
|  4 | 2019-09-15  |  5118        |
|  5 | 2019-09-10  |  5119        |
+----+------+------+------+-------+

Таблица"C"

+----+------+------+------+-------+
| id | update_date |update_emp_id  |
+----+------+------+------+-------+
|  1 | 2019-09-06  |  5117        |
|  2 | 2019-09-16  |  5118        |
|  3 | 2019-09-09  |  5117        |
|  4 | 2019-09-12  |  5118        |
|  5 | 2019-09-10  |  5119        |
+----+------+------+------+-------+

Теперь я хочу получить максимум update_date с update_emp_id среди всех трех таблиц

Как update_date = 2019-09-16 и update_emp_id = 5118

1 Ответ

1 голос
/ 06 октября 2019

Вы можете получить строку, соответствующую максимальному значению update_date в каждой таблице, используя ORDER BY update_date DESC LIMIT 1. Теперь вы можете UNION результатов из всех таблиц, а затем снова использовать ORDER BY, чтобы получить последнюю строку из всех:

( SELECT update_emp_id, update_date FROM tableA 
  ORDER BY update_date DESC LIMIT 1 )

UNION

( SELECT update_emp_id, update_date FROM tableB 
  ORDER BY update_date DESC LIMIT 1 )

UNION

( SELECT update_emp_id, update_date FROM tableC 
  ORDER BY update_date DESC LIMIT 1 )

ORDER BY update_date DESC LIMIT 1

Результат

| update_emp_id | update_date |
| ------------- | ----------- |
| 5118          | 2019-09-16  |

Показать на БД Fiddle

...