【问题标题】:Mysql Left Join Last RecordMysql Left Join 最后一条记录
【发布时间】:2018-09-19 12:52:34
【问题描述】:
Tablename: call
-------------------
|id | name        |
-------------------
| 1 | a           |
| 2 | b           |
| 3 | c           |
| 4 | d           |
| 5 | e           |
-------------------

Tablename: call_detail 
--------------------------------
|id |   detail     | call_id  |
--------------------------------
|1  | note-1       |  1       |
|2  | note-2       |  1       |
|3  | note-3       |  2       |
|4  | note-4       |  2       |
|5  | note-5       |  2       |
|6  | note-6       |  3       |
--------------------------------

需要结果

----------------------
| id | name | detail |
| 1  | a    | note-2 | 
| 2  | b    | note-5 |
| 3  | c    | note-6 |
| 4  | d    | null   |
| 5  | e    | null   |
----------------------

如何左连接两个表最后插入id

我需要左加入 call.id = call_detail.call.id 最后一条记录

有没有办法做到这一点

你能用一个简单的样本来展示吗

【问题讨论】:

    标签: mysql join left-join


    【解决方案1】:

    使用 call_detail 表的查询而不是整个表进行联接,因为您需要在进行联接之前在表中进行过滤才能正确过滤表。 您需要使用左连接来完成。

    使用以下查询:

    SELECT c.id, c.name, cd.detail
      FROM calls c LEFT JOIN
      (SELECT 
            call_id, 
            MAX(id),
            detail
        FROM call_detail GROUP BY call_id) cd ON cd.call_id = c.id
    

    你可以在这里看到它的工作原理:SQL Fiddle

    注意:由于关键字,我使用名称调用而不是调用。

    【讨论】:

    • 我认为detail字段并不总是有序的,max(detail)在增加时会适用于非常简单的情况,但在实际用例中则不然
    • @JRUtily 你是对的,我修改了查询,我们现在得到了最后一个基于 id 字段并按 call_id 分组的结果,在这种情况下结果是一样的,但是查询“更正确” "。
    【解决方案2】:

    您需要进行子查询并将其用作虚拟表。 比如:

    SELECT call.id, call.name, call_detail.detail
    FROM call, 
    LEFT JOIN ( select call_id, max(id) as last_call_id from call_detail group by call_id ) call_history ON call.id = call_history.call_id 
    LEFT JOIN call_detail ON call_history.last_call_id = call_detail.id 
    

    编辑:我添加了左连接:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多