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_emp_id的max_date
像update_date = 2019-09-16和update_emp_id = 5118
最佳答案
您可以使用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 |
View on DB Fiddle
关于mysql - 从三个表中获取最大日期和对应的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58255174/