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

在轻松地左转之后
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`;输出:
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显示
idZakazka|idStavZakazky|Zakazka_idZakazka|Nazev
_____________________________________________________
1| 3| 1|Přiřazeno
_____________________________________________________
2| 5| 2|Přiřazeno发布于 2017-08-27 19:31:20
您可以为idStavZakazky表中的每个Zakazka_idZakazkam找到最大的Nazev,然后从原始表中找到相应的行(因为您需要Nazev列),然后执行左连接。
如下所示:
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;https://stackoverflow.com/questions/45908504
复制相似问题