2009-06-19 6 views
1

У меня есть таблица A, содержащая около 15000 записей. У меня есть вторая таблица B с 7900 записями с общим полем с таблицей A.MySQL, как удалить записи в таблице, которые находятся в другой таблице

Мне нужно извлечь в третью временную таблицу C все записи из таблицы A, кроме тех, которые также отображаются в таблице B. Простой, как это может звучать , я havent нашел способ сделать это. Ближайший я получил это было:

INSERT INTO tableC 
SELECT * 
FROM tableA 
    INNER JOIN tableB 
     ON tableA.field IS NOT tableB.field 

Этот SQL просто выбирает все в TABLEA, даже записи, которые находятся в TableB.

Любые идеи, в которых я ошибаюсь?

ответ

6

Что делать, если вы попробуете это?

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) 
+0

отлично! Это работало как прелесть. Если бы не просто использование подвыборки. – 2009-06-19 18:59:53

+0

рад, что это помогло! –