MySQL, как удалить записи в таблице, которые находятся в другой таблице

StackOverflow https://stackoverflow.com/questions/1019475

  •  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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top