Sql 从更新选择不更新所有记录
我正在尝试“重新同步”一个表,在该表中我存储了易趣物品的详细信息。为此,我使用EBay API下载所有Sql 从更新选择不更新所有记录,sql,sql-server,tsql,sql-server-2014,Sql,Sql Server,Tsql,Sql Server 2014,我正在尝试“重新同步”一个表,在该表中我存储了易趣物品的详细信息。为此,我使用EBay API下载所有活动的物品,然后执行从选择到重新同步的更新 模式 CREATE TABLE [dbo].[tblEbayListings]( [ID] [int] IDENTITY(1,1) NOT NULL, [EndTime] [datetime] NULL, [StartTime] [datetime] NULL, [ItemEbayURL] [varchar](500)
活动的
物品,然后执行从选择到重新同步的更新
模式
CREATE TABLE [dbo].[tblEbayListings](
[ID] [int] IDENTITY(1,1) NOT NULL,
[EndTime] [datetime] NULL,
[StartTime] [datetime] NULL,
[ItemEbayURL] [varchar](500) NULL,
[ListingDuration] [varchar](50) NULL,
[ListingType] [varchar](50) NULL,
[ListingStatus] [varchar](50) NULL,
[SKU] [varchar](50) NULL
) ON [PRIMARY]
GO
用于存储通过API下载的当前活动列表
CREATE TABLE [dbo].[tblEbayProductStatus](
[PRProductId] [int] NOT NULL,
[EbayListingId] [varchar](15) NULL,
[DateListed] [datetime] NULL,
[CostOfListing] [money] NULL,
[DateOfStatusChange] [datetime] NULL,
[CurrentStatus] [varchar](10) NULL,
[ListingEndDate] [datetime] NULL,
CONSTRAINT [PK_tblEbayProductStatus] PRIMARY KEY CLUSTERED
(
[PRProductId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
用于记录易趣物品状态和物品结束日期(我要重新同步的表)
代码
运行此代码后,此选择
SELECT eps.[CurrentStatus]
,ebl.[ListingStatus]
,ebl.sku
,eps.[PRProductId]
,eps.ListingEndDate
,ebl.EndTime
FROM [tblEbayListings] ebl
Join [tblEbayProductStatus] eps
ON eps.[PRProductId] = ebl.sku
Where ebl.ListingStatus = 'Active'
显示一些更新,一些不更新
+---------------+---------------+--------+-------------+------------------+------------------+
| CurrentStatus | ListingStatus | sku | PRProductId | ListingEndDate | EndTime |
+---------------+---------------+--------+-------------+------------------+------------------+
| DeListed | Active | 160008 | 160008 | 2016-01-15 14:30 | 2016-03-05 14:50 |
| Listed | Active | 160010 | 160010 | 2016-03-05 14:50 | 2016-03-05 14:50 |
| Listed | Active | 160012 | 160012 | 2016-03-05 14:50 | 2016-03-05 14:50 |
| Listed | Active | 160016 | 160016 | 2016-03-05 14:50 | 2016-03-05 14:50 |
| DeListed | Active | 160017 | 160017 | 2016-01-18 06:42 | 2016-02-17 06:50 |
| Listed | Active | 160018 | 160018 | 2016-03-05 14:51 | 2016-03-05 14:51 |
| DeListed | Active | 160026 | 160026 | 2016-02-02 10:30 | 2016-03-05 14:26 |
+---------------+---------------+--------+-------------+------------------+------------------+
如果我将上的连接更改为“选择”
eps.[PRProductId] = CAST(RTRIM(LTRIM(ebl.SKU)) As INT)
我得到了完全相同的结果。如果我将更新上的联接更改为
eps.[PRProductId] = ebl.SKU
我得到了完全相同的结果
我知道我错过了一些愚蠢的事情,因为我已经做了很多次了,但我看不出我在寻找什么。感谢您的帮助。您可以尝试此更新代码
UPDATE
tblEbayProductStatus
SET
CurrentStatus = CASE WHEN RTRIM(LTRIM(ebl.ListingStatus)) = 'Active'
THEN 'Listed' ELSE 'DeListed' END,
ListingEndDate = ebl.EndTime
FROM
tblEbayListings ebl
WHERE
tblEbayProductStatus.[PRProductId] = CAST(RTRIM(LTRIM(ebl.SKU)) As INT)
您可以尝试此更新代码
UPDATE
tblEbayProductStatus
SET
CurrentStatus = CASE WHEN RTRIM(LTRIM(ebl.ListingStatus)) = 'Active'
THEN 'Listed' ELSE 'DeListed' END,
ListingEndDate = ebl.EndTime
FROM
tblEbayListings ebl
WHERE
tblEbayProductStatus.[PRProductId] = CAST(RTRIM(LTRIM(ebl.SKU)) As INT)
Fred I将运行以下程序来尝试缩小问题范围:选择UpdatedCurrentStatus=CASE当RTRIM(LTRIM(ebl.ListingStatus))为'Active'时,然后选择'Listed'否则为'DeListed'结束,eps.CurrentStatus UpdatedListingEndate=ebl.EndTime,eps.ListingEndate来自tblEbayProductStatus eps加入tblEbayListings eps上的ebl。[PRProductId]=CAST(RTRIM(LTRIM(ebl.SKU))作为INT)@KamranFarzami我要寻找什么?我不确定这对我有什么帮助。我要做的是查看select语句返回的行,看看是什么导致更新不更新数据。select的逻辑与update语句相同。您的连接条件不同eps。[PRProductId]=CAST(RTRIM(LTRIM(ebl.SKU))作为INT)
与eps。[PRProductId]=ebl.sku
@TT.My bad.这正是我怀疑可能是连接导致了问题的地方。我开始使用相同的连接,但遇到了相同的问题。我尝试了所有不同的连接,我认为上面的连接只是最新的连接。Fred我将运行以下操作来尝试缩小问题范围:选择UpdatedCurrentStatus=当RTRIM(LTRIM(ebl.ListingStatus))为'Active'然后为'ListingStatus'或'DeListed'结束时的情况,eps.CurrentStatus UpdatedListingDate=ebl.EndTime,eps.ListingDate从tblEbayProductStatus eps加入tblEbayListings eps上的ebl。[PRProductId]=强制转换(RTRIM(LTRIM(ebl.SKU))为INT)@KamranFarzami我要寻找什么?我不确定这对我有什么帮助。我要做的是查看select语句返回的行,看看是什么导致更新不更新数据。select的逻辑与update语句相同。您的连接条件不同eps。[PRProductId]=CAST(RTRIM(LTRIM(ebl.SKU))作为INT)
与eps。[PRProductId]=ebl.sku
@TT.My bad.这正是我怀疑可能是连接导致了问题的地方。我开始使用相同的连接,但遇到了相同的问题。我尝试了所有不同的连接,我认为上面的连接只是最新的一个。关键字“ON”附近的语法不正确。
中缺少一个表。FROM
关键字“ON”附近的语法不正确。
FROM的中缺少一个表