Обновление обеих таблиц во внутреннем соединении приводит к странному количеству сопоставленных строк

Я обновил таблицу контактов, соединенную с таблицей компании, используя следующий 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, поэтому строки из этой таблицы теперь также сопоставляются. Суммируются ли числа?

uri2x 24.04.2018 20:51

И что это за два числа?

Booboo 24.04.2018 21:36
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
23
0

Другие вопросы по теме