从三个表中获取最大日期和对应行
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 |
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 |