繁体   English   中英

为什么我的查询忽略了WHERE子句之一?

[英]Why is my query ignoring one of the WHERE clauses?

早上,

我无法弄清楚为什么我的查询(下面)忽略了amzLive的WHERE子句。 并且仍在返回重复项。

SELECT  asin
FROM    dbo.aboProducts
WHERE  (asin NOT IN
             (SELECT DISTINCT productAsin
              FROM   dbo.LowestPrices
              WHERE (priceDate > GETDATE() - 1))) AND (amzLive = 'true')

它返回的是项列表,但仍带回amzLive设置为true或false的项。

有人可以看到我要去哪里了吗?

根据要求更新数据库结构... aboProducts表

id          int            Unchecked
asin        nvarchar(50)   Checked
codeType    int            Checked
sku         nvarchar(50)   Unchecked
amzPrice    decimal(18, 2) Checked
amzLive     bit            Checked
lastUpdated datetime       Checked

最低价格表

id           int            Unchecked
productAsin  nvarchar(50)   Unchecked
price        decimal(18, 2) Unchecked
postage      decimal(18, 2) Checked
priceDate    datetime       Unchecked
twAmzPrice   decimal(18, 2) Checked

这会起作用

Select *
From 
(SELECT  asin,amzLive
FROM    dbo.aboProducts
WHERE  (asin NOT IN
             (SELECT DISTINCT productAsin
              FROM   dbo.LowestPrices
              WHERE (priceDate > GETDATE() - 1)
              )
         ) 
       )X
where X.amzLive = 'true'

也试试这个

SELECT ap.asin
FROM dbo.aboProducts ap
Left Join   (SELECT DISTINCT productAsin FROM dbo.LowestPrices  WHERE (priceDate > GETDATE() - 1))x
ON ap.asin  = x.productAsin
WHERE ap.amzLive = 'true' 
AND LEN(ap.asin) > 0 -- ap.asin IS NOT NULL
SELECT  asin
FROM    dbo.aboProducts
WHERE  (asin NOT IN
             (SELECT DISTINCT productAsin
              FROM   dbo.LowestPrices
              WHERE (priceDate > dateadd(day,-1,GETDATE()) ))) AND (amzLive = 'true')
  1. 不要对位使用“ true”和“ false”,而是使用1或0
  2. left join将使您的查询更清晰,更可预测
  3. 仅供参考,SQL Server具有money数据类型

例如

select ASIN
from aboProducts
    left join lowestprices
        on aboProducts.asin = lowestprices.productAsin
        and lowestprices.pricedate > (GETDATE()-1)
where lowestprices.productAsin is null
and aboProducts.amzlive=1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM