SQL查询;我想获得自过去7天以来未更新的Enquiry_No

时间:2010-01-27 20:15:41

标签: sql-server

我有两个表TblEnquiry,其中查询_No为主键,tblHistory用于维护更新详细信息,其中Enquiry_No为外键,History_CreatedOn字段为日期。 我希望获得自过去7天以来未更新的查询。

4 个答案:

答案 0 :(得分:3)

SELECT e.*
FROM tblEnquiry e
WHERE NOT EXISTS(SELECT * FROM tblHistory h WHERE e.Enquiry_No = e.Enquiry_No AND h.History_CreatedOn >= DATEADD(dd, -7, GETDATE())

答案 1 :(得分:1)

如果您使用的是SQL Server:

SELECT
     <add columns here>
FROM
     tblEnquiry
WHERE
     NOT EXISTS
     (
          SELECT *
          FROM tblHistory H
          WHERE H.enquiry_no = E.enquiry_no
            AND H.history_createdon BETWEEN DATEADD(dy, -7, GETDATE()) AND GETDATE()
     )

答案 2 :(得分:0)

WITH Hist(enquiry_no, history_createdon) AS
(
    SELECT Enquiry_No, History_CreatedOn
    FROM tblHistory
    WHERE History_CreatedOn >= DATEADD(dd, -7, GETDATE())
)
SELECT * 
FROM tblEnquiry 
    LEFT OUTER JOIN Hist ON tblHist.enquiry_no = tblEnquiry.enquiry_no 
WHERE tblHistory.enquiry_no IS NULL

这样可以避免标准NOT EXISTS查询的性能不佳

答案 3 :(得分:0)

得到了答案

选择h1.Enquiry_No 来自tblHistory h1 分组由h1.Enquiry_No 有DATEDIFF(DD,Max(h1.History_CreatedOn),GETDATE())&gt; = 7

我收到了自过去7天以来未更新的查询