Обновите столбец в таблице A из таблицы B, где значение не существует в отличном от таблицы B значении в MYSQL - PullRequest
1 голос
/ 09 апреля 2020

У меня есть две таблицы, каждая из которых содержит столбец с именем domain.

Таблица A

|id | domain        |
|-------------------|
| 1 | google.com    |
| 2 | google.com    |
| 3 | yahoo.com     |
| 4 | microsoft.com |
| 5 | microsoft.com |
| 6 | slack.com     |
| 7 | loom.com      |
| 8 | loom.com      |

Таблица B

|id | domain        |
|-------------------|
| 1 | google.com    |
| 2 | yahoo.com     |
| 3 | microsoft.com |

Я хочу добавить строки в Table B для значений в Table A, которые:

  1. Не существуют в Table B
  2. Различаются в Tabel A

Так в приведенном выше примере использования Table B будет выглядеть следующим образом:

|id | domain        |
|-------------------|
| 1 | google.com    |
| 2 | yahoo.com     |
| 3 | microsoft.com |
| 4 | slack.com     |
| 5 | loom.com      |

Вот где я нахожусь с запросом, который явно не работает:

UPDATE tableb tb SET tb.domain = ta.domain WHERE tb.domain NOT IN (SELECT DISTINCT(domain) FROM tablea) ta LIMIT 1

1 Ответ

2 голосов
/ 09 апреля 2020

Использование существует logi c:

INSERT INTO TableB (domain)   -- assuming id is auto increment
SELECT DISTINCT domain
FROM TableA a
WHERE NOT EXISTS (SELECT 1 FROM Tableb b WHERE b.domain = a.domain);

Условие существования гарантирует, что домен из таблицы A еще не существует в таблице B. Мы выбираем разные домены из таблицы A, чтобы избежать вставки одного и того же домена более одного раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...