2017-06-29 7 views
0

を使用して2つのテーブルを結合:SQLは、私はこの2つのテーブル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|    | 
|--------------|----------------|----------------|----------------| 

今私は(テーブルBから)、最新の更新時間を取得したい行ごとに表Aにいる場合がありますテーブル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でこれを行う方法はありますか?また、いくつかの説明はうまくいくでしょう。助けてくれてありがとう!

答えて

1

LEFT JOINを使用してください。

LEFT JOINのサブクエリは、ID_Aを持つすべての値と、Update_DateTimeのMAX値を返します。これは、テーブルBの値と一致しています。

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 
+0

ありがとうございます!これは素晴らしい作品です! –

関連する問題