2012-12-06 201 views
0

我们有两张表,其中表A和表B需要连接。表A和B之间的关系是一对多关系。我们现在可以在tableA.aID = tableB.aID上使用这个LEFT JOIN tableB进行连接。我们希望确保表B上只有一条记录被加入,并且这只是最新的记录。我们现在获得更多的记录。左连接Mysql查询

SELECT student.* 

FROM student 
     LEFT JOIN (SELECT B1.* 
        FROM medicalRecord AS B1 
         LEFT JOIN medicalRecord AS B2 
           ON B1.studentID = B2.studentID 
            AND B1.checkUpDate< B2.checkUpDate 
        WHERE B2.studentID IS NULL) AS b 
       ON (student.studentID = medicalRecord.studentID) 

Where student.studentID=45 
+0

你的实际问题是什么? – amphibient

+0

“最后”按什么列排序?请张贴一些架构。 –

+2

没有问题,没有代码,没有尝试不... ...,只是帮我 –

回答

1

让我们假设您只想从子表中获取具有val列中最高值的子记录。你可以使用:

SELECT a.*, 
     b.* 
FROM a 
     LEFT JOIN (SELECT B1.* 
        FROM b AS B1 
         LEFT JOIN b AS B2 
           ON B1.aID = B2.aID 
            AND B1.val < B2.val 
        WHERE B2.aID IS NULL) AS b 
       ON (a.aID = b.aID) 

的想法是使用子查询过滤表与在val列最值的记录,然后对加入该

+0

如果我使用分组机制,是否可以避免子查询会起作用? – user132638

+0

我根据你的建议更新了我的问题,但它给我错误作为medicalRecord.studentID作为未知列,我有双重检查列确实存在。 – user132638