2012-12-06 238 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