我已经做了一些SQL代码(我想)会更新1字段只有一些记录。我所做的代码是:为什么此UPDATE更改所有行而不是一行?
UPDATE Name
SET name.STATUS = 'a'
WHERE EXISTS
(SELECT Name.ID,
Name.MEMBER_TYPE,
Name.CATEGORY,
Name.STATUS,
Name.COMPANY_SORT,
Name.FULL_NAME,
Name.TITLE,
Name.FUNCTIONAL_TITLE,
Activity.ACTIVITY_TYPE,
Activity.PRODUCT_CODE,
Activity.TRANSACTION_DATE
FROM Name
INNER JOIN Activity ON Name.ID = Activity.ID
WHERE ACTIVITY_TYPE = 'ELECTIONS'
AND PRODUCT_CODE LIKE '%new%'
AND TRANSACTION_DATE LIKE '%2014%'
AND name.MEMBER_TYPE IN ('mcm',
'MCNM'))
,但它的名称命名的所有记录更新为a
状态,而不仅仅是一个在那里存在的说法......我有什么搞砸了?
运行在自己的SELECT语句;这会告诉你哪些行受到影响。这将超出您的预期。请注意,SELECT中的'Name'与UPDATE中的'Name'分开;也就是说,子查询不是与UPDATE中的行相关的子查询。 – 2014-11-24 17:37:41
我认为这是因为只要有一条记录被SELECT返回,就会验证EXISTS条件导致完全更新,因为没有其他条件 – Guillaume 2014-11-24 17:38:49