MySQL, как удалить записи в таблице, которые находятся в другой таблице - PullRequest
1 голос
/ 19 июня 2009

У меня есть таблица 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.

Есть идеи, где я ошибаюсь?

1 Ответ

6 голосов
/ 19 июня 2009

Что если вы попробуете это?

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)
...