0

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

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
4

1 回答 1

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,然后加入列。

于 2012-12-06T19:07:17.347 回答