Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从更新选择不更新所有记录_Sql_Sql Server_Tsql_Sql Server 2014 - Fatal编程技术网

Sql 从更新选择不更新所有记录

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)

我正在尝试“重新同步”一个表,在该表中我存储了易趣物品的详细信息。为此,我使用EBay API下载所有
活动的
物品,然后执行从选择到重新同步的更新

模式

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的
中缺少一个表