帮助sql查询涉及两个表和一个最大日期

时间:2010-05-25 21:26:45

标签: sql-server

我有两个表通知和mailmessages。

通知表
  - 通知时间
  - NotifyNumber
  - AccountNumber

MailMessages表
  - id
  - messageSubject
  - MessageNumber
  - AccountNumber

我的目标是创建单个sql查询以从mailmessages中检索不同的行WHERE accountnumber是一个特定的数字和notifynumber = messagenumber只有来自通知表的最近的notifytime,其中两个表中的accountnumbers匹配。

我使用sqlexpress2008作为asp.net页面的后端。此查询应返回仅包含通知表中最新日期的帐户的不同消息。

请帮忙!我给你买啤酒!!!

2 个答案:

答案 0 :(得分:0)

试试这个......

SELECT MM.MaxNotifyTime, Notify.MaxNotifyTime
FROM MailMessages MM 
  INNER JOIN (SELECT Max(NotifyTime) MaxNotifyTime, AccountNumber
              FROM Notifications
              GROUP BY AccountNumber) Notify ON (MM.AccountNumber=Notify.AccountNumber)
WHERE (MM.AccountNumber=1)

答案 1 :(得分:0)

SELECT MM.MessageNumber, MAX(N.NotifyTime) MaxTime
FROM MailMessages MM
INNER JOIN Notifications N
    ON MM.AccountNumber = N.AccountNumber AND MM.MessageNumber = N.NotifyNumber
WHERE MM.AccountNumber = 1
GROUP BY MM.MessageNumber

这限制了给定的AccountNumber(= 1)并输出每个关联的MessageNumber以及Notifications中最新的相应条目的日期。