我编辑了我的答案,所以我的问题的解决方案是:
select DISTINCT e.Cod_proiect
, p.Descriere
, p.Stare
, p.ClientService
, e.Data
from ExpPoz as e
join Proiecte as p
on e.Cod_proiect=p.Cod_proiect
join (
select cod_proiect, max(data) maxDt
from ExpPoz
group by cod_proiect
) latest on latest.cod_proiect = e.cod_proiect and latest.maxDt = e.Data and p.Stare='I'
出现以下错误:子查询返回超过 1 个值 我试图让每一行都有最大日期。
我有以下表结构:
a date1
a date2
a date3
b date4
b date5
假设 date3 和 date5 是最旧/最大的,输出应该是:
a date3
b date5
提前致谢。
最佳答案
这应该可以解决问题:
select e.Cod_proiect
, p.Descriere
, p.Stare
, p.ClientService
from ExpPoz as e join Proiecte as p on e.Cod_proiect=p.Cod_proiect
join (
select cod_proiect, max(data) maxDt
from ExpPoz
group by cod_proiect
) latest on latest.cod_proiect = e.cod_proiect and latest.maxDt = e.Data
where p.Stare='I'
请注意,您编写 joins
的方式非常古老,如果您使用现代 join
样式,它会更好、更清晰。
在此查询中,我选择了您需要的所有内容,并使用每个 cod_proiect
的最新记录加入一次。
关于mysql - 获取 SQL 中表中每一行的最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48930913/