我已經做了一些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