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/

10-16 13:53