1
    SELECT BabyInformation.* , t1.* 
    FROM   BabyInformation 
    LEFT  JOIN
      (SELECT *  FROM  BabyData 
       GROUP BY BabyID 
       ORDER By Date DESC  ) AS t1 ON BabyInformation.BabyID=t1.BabyID

这是我的查询。BabyData我想根据日期获取一个最新的元组。每个婴儿BabyInformation应该离开babyData一排...

我试过TOP(1)了,但这仅适用于第一个婴儿

4

2 回答 2

3

这是一种方法,还有其他方法可以更快,但我相信这对于初学者来说是最清楚的。

 SELECT BabyInformation.*, BabyData.*
    FROM   BabyInformation 
    JOIN
      (SELECT BabyID, Max(Date) as maxDate  FROM  BabyData 
       GROUP BY BabyID 
      ) AS t1 
 ON BabyInformation.BabyID=t1.BabyID 
    Join BabyData ON BabyData.BabyID = t1.BabyID and BabyData.Date = t1.maxDate
于 2010-10-14T10:22:26.850 回答
1

这应该这样做:

SELECT bi.* , bd.* 
    FROM BabyInformation [bi]
    LEFT JOIN BabyData [bd]
        on bd.BabyDataId = (select top 1 sub.BabyDataId from BabyData [sub] where sub.BabyId = bi.BabyId order by sub.Date desc)

我假设 BabyData 表中有一个名为“BabyDataId”的列。

于 2010-10-14T10:28:14.923 回答