从三个表中获取最大日期和对应行

Get maximum date and corresponding row out of three tables

MariaDB 版本:10.1.40-MariaDB

我有一个 3 table 像 A、B、C 这三个 table 都有一列 "update_date" 和 "update_emp_id"。现在,我试图在所有三个 Tables

中获得最大 update_date 和 update_emp_id

例如Table"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        |
+----+------+------+------+-------+

Table "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        |
+----+------+------+------+-------+

Table "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        |
+----+------+------+------+-------+

现在我想在所有三个 Table 中获得最大值 update_date 和 update_emp_id

喜欢update_date=2019-09-16 和update_emp_id=5118

您可以使用 ORDER BY update_date DESC LIMIT 1 获取每个 table 中最大 update_date 值对应的行。现在,您可以 UNION 来自所有 table(s) 的结果,然后再次使用 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  |

View on DB Fiddle