繁体   English   中英

从连接表中获取最后一条记录

[英]Get last record from joined table

我有两张表 DOCUMENT 和 SIGNATURES,如下所示

DOCUMENTS
doc_id    doc_name
1         Contract
2         Lead
3         Invoice 1
4         Invoice 2
5         Payment 123

SIGNATURES
sig_id    sig_doc_id     signature_name
1         1              Paul
2         2              Mark
3         1              Chew
4         2              Paul
5         3              John
6         3              Derek
7         3              Silvan
8         5              Roden

我正在尝试获取最后一个签名名称。

EXPECTED OUTPUT
doc_id      doc_name      signature_name
1           Contract      Chew
2           Lead          Paul
3           Invoice 1     Silvan
4           Invoice 2             < empty because we not have signature
5           Payment 123   Roden

我有一个带有数据库和查询的 SQL FIDDLE,但是在运行搜索时没有找到记录。

http://sqlfiddle.com/#!9/b98474/3

这是我的查询

SELECT docs.*, sign.*
FROM cnt_man_docs docs
INNER JOIN cnt_man_doc_signatures sign ON docs.cnt_man_doc_id = sign.cnt_man_doc_signature_doc_id
WHERE sign.cnt_man_doc_signature_id = 
(SELECT MAX(cnt_man_doc_signature_id)
FROM cnt_man_doc_signatures
WHERE sign.cnt_man_doc_signature_id = docs.cnt_man_doc_id)

一个简单的方法是相关子查询:

select d.*,
       (select s.signature_name
        from signatures s
        where s.sig_doc_id = d.doc_id
        order by s.sig_id desc
        limit 1
       ) as signature_name
from documents d;

使用signatures(doc_id, sig_id desc, signature_name)这可能也是最快的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM