0

早上,这类似于我昨天问的一个问题[问题]:SQL查询获取最新价格,取决于日期

我需要从最低价格表中返回自上次更新日期起 24 小时内未更新的 ASIN 列表。我可以获得一个 ASIN 列表,但它会返回所有这些。有人可以帮我用 SQL 来获取这个列表吗?

SELECT     asin
FROM       dbo.aboProducts
WHERE     (asin NOT IN
               (SELECT    aboProducts_1.asin
                FROM      dbo.aboProducts AS aboProducts_1 INNER JOIN
                          dbo.LowestPrices ON aboProducts_1.asin = dbo.LowestPrices.productAsin
                WHERE    (dbo.aboProducts.amzLive = 'true') AND 
                         (dbo.LowestPrices.priceDate < DATEADD(day, - 1, GETDATE()))))
4

2 回答 2

1

我认为你的比较错误

尝试

SELECT     asin 
FROM       dbo.aboProducts 
WHERE     (asin NOT IN 
               (SELECT    aboProducts_1.asin 
                FROM      dbo.aboProducts AS aboProducts_1 INNER JOIN 
                          dbo.LowestPrices ON aboProducts_1.asin = dbo.LowestPrices.productAsin 
                WHERE    (dbo.aboProducts.amzLive = 'true') AND  
                         (dbo.LowestPrices.priceDate > DATEADD(day, - 1, GETDATE()))))
于 2012-08-31T10:55:09.713 回答
0

@podiluska 的回答是正确的。由于您正在使用

WHERE     (asin NOT IN

您想通过以下方式获取过去 24 小时内已更新的所有项目

dbo.LowestPrices.priceDate > DATEADD(day, - 1, GETDATE())

然后使用 NOT IN 子句将它们排除在外,这将为您留下过去 24 小时内未更新的所有项目。

于 2012-08-31T15:13:12.737 回答