MySQL, как удалить записи в таблице, которые находятся в другой таблице
-
06-07-2019 - |
Вопрос
У меня есть таблица A с почти 15000 записей. У меня есть вторая таблица B с 7900 записями с общим полем с таблицей A.
Мне нужно извлечь в третью временную таблицу C все записи из таблицы A, кроме тех, которые также появляются в таблице B. Как бы это ни звучало, я не нашел способа сделать это. Самое близкое, что у меня было, это:
INSERT INTO tableC
SELECT *
FROM tableA
INNER JOIN tableB
ON tableA.field IS NOT tableB.field
Этот SQL просто выбирает все в таблице A, даже записи в таблице B.
Есть идеи, где я ошибаюсь?
Решение
Что если вы попробуете это?
INSERT INTO tableC
SELECT *
FROM tableA
WHERE tableA.field NOT IN (SELECT tableB.field FROM tableB)
Или вы можете попробовать альтернативный синтаксис EXISTS
INSERT INTO tableC
SELECT *
FROM tableA
WHERE NOT EXISTS (SELECT * FROM tableB WHERE tableB.field = tableA.field)
Не связан с StackOverflow