2016-02-05 4 views
1

У меня есть 2 таблицы, как показано ниже. В идеале Table2.C1 является внешним ключом Table1.C1, однако внешний ключ не был настроен изначально. Теперь мы не можем настроить внешний ключ, потому что в таблице 2 есть некоторые сиротские записи, которые мы хотим удалить, прежде чем применять инструкцию alter.Удаление сиротских записей с помощью Присоединиться

Примечание: Я не хочу использовать любой Sub/вложенный запрос

Table1 
-------- 
| C1 | 
-------- 
| 1 | 
| 2 | 
| 3 | 
| 4 | 
|------| 

Table2 
-------- 
| C1 | 
-------- 
| 1 | 
| 1 | 
| 8 | 
| 9 | 
| 2 | 
|------| 

Я хочу удалить записи 8 и 9 из таблицы 2.

ответ

3
DELETE table2.* 
FROM 
table2 
LEFT OUTER JOIN table1 ON table2.c1 = table1.c1 
WHERE 
table1.c1 IS NULL 
+0

Спасибо. как это отличается от ответа Пита. Ответ Пита также отлично работает. – Malaiselvan

+0

У нас просто есть таблицы в другом порядке, так что мое - это правильное соединение, а randy использует левое соединение. – Pete

+0

Мне просто нравится иметь дело с левыми объединениями, а не с правыми объединениями. Они функционально выполняют одно и то же. – randyh22

1
DELETE table2.* 
FROM table1 
RIGHT JOIN table2 ON table1.c1=table2.c1 
WHERE table1.c1 IS NULL 
Смежные вопросы