mysql左连接最后一条记录

vdgimpew  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(433)
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
im need left join call.id=call\u detail.call.id最后一条记录
有办法吗
你能用一个简单的抽样来说明吗

jw5wzhpr

jw5wzhpr1#

对call\u 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
注意:由于关键字的原因,我使用了name calls而不是call。

xpszyzbs

xpszyzbs2#

您需要创建一个子查询并将其用作虚拟表。比如:

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

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

相关问题