首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >沿max id从3个表中选择,使用左连接还是子查询?

沿max id从3个表中选择,使用左连接还是子查询?
EN

Stack Overflow用户
提问于 2017-08-27 19:22:08
回答 1查看 37关注 0票数 1

我希望选择所有行在表zakazka与最新的idStavZakazky。如何获得?EER图:

在轻松地左转之后

代码语言:javascript
复制
 SELECT `zakazka`.`idZakazka`,
`stavzakazky`.`idStavZakazky`,
`stavzakazky`.`Zakazka_idZakazka`,
`seznamstavu`.`Nazev`
FROM `autoservis`.`zakazka`
LEFT JOIN `autoservis`.`stavzakazky` ON `zakazka`.`idZakazka` = `stavzakazky`.`Zakazka_idZakazka`
LEFT JOIN `autoservis`.`seznamstavu` ON `stavzakazky`.`SeznamStavu_idSeznamStavu` = `seznamstavu`.`idSeznamStavu`
ORDER BY `zakazka`.`idZakazka`;

输出:

代码语言:javascript
复制
idZakazka|idStavZakazky|Zakazka_idZakazka|Nazev
_____________________________________________________
        1|            2|                1|Založeno
_____________________________________________________
        1|            3|                1|Přiřazeno
_____________________________________________________
        2|            4|                2|Pozastavená
_____________________________________________________
        2|            5|                2|Přiřazeno

但是我想要像这样的结果,只用最新的idStavZakazky显示

代码语言:javascript
复制
idZakazka|idStavZakazky|Zakazka_idZakazka|Nazev
_____________________________________________________
        1|            3|                1|Přiřazeno
_____________________________________________________
        2|            5|                2|Přiřazeno
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-27 19:31:20

您可以为idStavZakazky表中的每个Zakazka_idZakazkam找到最大的Nazev,然后从原始表中找到相应的行(因为您需要Nazev列),然后执行左连接。

如下所示:

代码语言:javascript
复制
select zakazka.idZakazka,
    stavzakazky.idStavZakazky,
    stavzakazky.Zakazka_idZakazka,
    seznamstavu.Nazev
from autoservis.zakazka
left join (
    select *
    from autoservis.stavzakazky
    join (
        select Zakazka_idZakazkam, max(idStavZakazky) as idStavZakazky
        from autoservis.stavzakazky
        group by Zakazka_idZakazkam
        ) t using (Zakazka_idZakazkam, idStavZakazky)
    ) stavzakazky on zakazka.idZakazka = stavzakazky.Zakazka_idZakazka
left join autoservis.seznamstavu on stavzakazky.SeznamStavu_idSeznamStavu = seznamstavu.idSeznamStavu
order by zakazka.idZakazka;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45908504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档