SQL-选择联接中的最后一个寄存器



我需要获取联接中的最后一个(fechaDesde字段(寄存器,我只想要最后一条记录,并且我有这个表:

[relObrSocPaciente]

idPaciente  |   idObraSocial|   fechaDesde
1       |       1       |   2018-07-29 21:49:46
1       |       2       |   2017-07-29 21:49:46
1       |       3       |   2019-07-30 00:00:00
2       |       3       |   2018-07-30 21:49:46
1       |       4       |   2001-07-29 21:49:46
1       |       5       |   2018-07-30 23:49:46

我有这个问题:

SELECT p.idPaciente, p.nombre, p.apellido, p.email, o.descOSoc
FROM pacientes p 
LEFT JOIN (
SELECT r.idPaciente, r.idObraSocial, max(r.fechaDesde) MaxDate
FROM relObrSocPaciente r
group by r.idPaciente ) rel on p.idPaciente = rel.idPaciente
INNER JOIN obrasocial o ON rel.idObraSocial = o.idOSocial
WHERE p.estado = '0'
ORDER by rel.MaxDate DESC

问题在于内部选择:

SELECT r.idPaciente, r.idObraSocial, max(r.fechaDesde) MaxDate
FROM relObrSocPaciente r
group by r.idPaciente

将带来:

idPaciente  |   idObraSocial|   fechaDesde
1       |       1       |   2019-07-30 00:00:00
2       |       3       |   2018-07-30 21:49:46

并且第一条记录不在我的数据库中;应该是:

1       |       3       |   2019-07-30 00:00:00

我快没想象力了,请帮帮我。谢谢!

已解决:

SELECT tf.idPaciente, tf.nombre, tf.apellido, tf.email, o.descOSoc, r.fechadesde
FROM pacientes tf 
LEFT JOIN relObrSocPaciente r on tf.idPaciente = r.idPaciente
LEFT JOIN obrasocial o on r.idObraSocial = o.idOSocial
WHERE r.fechaDesde in ( SELECT max( fechadesde )
FROM relObrSocPaciente
WHERE idPaciente = tf.idPaciente )

最新更新