【问题标题】:SQL join two tables using the maximum valuesSQL 使用最大值连接两个表
【发布时间】:2017-06-29 18:17:05
【问题描述】:

我有这两张表 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 中做到这一点?也有一些解释会很好。感谢您的帮助!

【问题讨论】:

    标签: mysql sql join subquery


    【解决方案1】:

    使用左连接。这将只返回表 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      相关资源
      最近更新 更多