簡體   English   中英

SQL使用最大值聯接兩個表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM