Я обновил таблицу контактов, соединенную с таблицей компании, используя следующий SQL:
UPDATE contact join company on contact.FK_Company = company.PK_Company
SET contact.Mailer = 'PeriodicNews',
contact.Mailer_Date = '2018-04-23'
WHERE
NOT contact.Unsubscribe
AND NOT contact.Bounced
AND NOT contact.Spam_Filter
AND (contact.Primary_E_Mail LIKE '%@yahoo.com'
OR contact.Primary_E_Mail LIKE '%@aol.com')
AND contact.SPM_Contact
AND company.Customer
AND company.Business_State in ('ME', 'VT', 'NH', 'MA', 'RI', 'CT', 'NY', 'NJ', 'PA','DE', 'MD')
;
Если я перезапущу SQL под консолью MySQL, количество измененных строк будет указано (естественно) как 0, а количество совпавших строк - как 112. Если я теперь добавлю то, что я считаю безобидным, чтобы установить столбец company.Customer на сам, как в:
UPDATE contact join company on contact.FK_Company = company.PK_Company
SET contact.Mailer = 'PeriodicNews',
contact.Mailer_Date = '2018-04-23',
company.Customer = company.Customer /*** This is the new line ! ***/
WHERE
NOT contact.Unsubscribe
AND NOT contact.Bounced
AND NOT contact.Spam_Filter
AND (contact.Primary_E_Mail LIKE '%@yahoo.com'
OR contact.Primary_E_Mail LIKE '%@aol.com')
AND contact.SPM_Contact
AND company.Customer
AND company.Business_State in ('ME', 'VT', 'NH', 'MA', 'RI', 'CT', 'NY', 'NJ', 'PA','DE', 'MD')
;
Теперь, как и раньше, количество измененных строк по-прежнему равно 0, но количество сопоставленных строк отображается как 192. Я не могу понять, почему были сопоставлены дополнительные 80 строк, когда есть только 112 строк, удовлетворяющих условиям WHERE. Если я удалю условие «AND company.Customer», то останется только 131 соответствующая строка.
И что это за два числа?






Возможно, потому, что теперь вы также обновляете таблицу Company, поэтому строки из этой таблицы теперь также сопоставляются. Суммируются ли числа?