![](/img/trans.png)
[英]MySQL Inner Join two tables on the maximum values of the second table
[英]SQL join two tables using the maximum values
我有這兩個表A和B:
Table A:
|--------------|----------------|
| ID_A |other attributes|
|--------------|----------------|
| 1 | |
| 2 | |
| 3 | |
| 4 | |
|--------------|----------------|
Table B:
|--------------|----------------|----------------|----------------|
| ID_B | ID_A | update_time |other attributes|
|--------------|----------------|----------------|----------------|
| 1 | 2 |2017/01/01 07:00| |
| 2 | 2 |2017/01/01 11:00| |
| 3 | 2 |2017/01/01 13:00| |
| 4 | 2 |2017/01/01 08:00| |
| 5 | 2 |2017/01/01 06:00| |
| 6 | 3 |2017/01/01 12:00| |
| 7 | 3 |2017/01/01 13:00| |
| 8 | 4 |2017/01/01 17:00| |
|--------------|----------------|----------------|----------------|
現在,我想獲取表A中每一行的最新更新時間(來自表B)。如果表A和表B之間沒有關系,我想顯示NULL。 上表的理想結果是:
|--------|----------------|
| ID_A | update_time |
|--------|----------------|
| 1 | NULL |
| 2 |2017/01/01 13:00|
| 3 |2017/01/01 13:00|
| 4 |2017/01/01 17:00|
|--------|----------------|
有什么辦法可以在SQL中執行此操作? 也有一些解釋會很好。 謝謝你的幫助!
使用左聯接。 這將僅返回表B中的匹配值,並保留表A中的所有值。
LEFT JOIN的子查詢將返回ID_A的所有值及其MAX_Update_DateTime的值。
Select a.ID_A
b.Update_Time
FROM TABLE A A
LEFT JOIN (Select ID_A, max(Update_Time) as Update_Time
FROM TABLE B
Group by ID_A) B on B.ID_A = A.ID_A
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.