2016-10-01 5 views
0

У меня есть две таблицы, как это:Удаление нескольких строк в SQL

Table L 
A | B 
C | D 

Table K  
A | B 
C | D 
E | F 
etc etc 

Я свистеть, чтобы удалить в table K все строки, которые существуют в Table L.

Однако, когда я удалю, он исключит только первую строку. Я хотел бы, что если больше строк, где вставленные в Table L, совпадающие с линиями в Table K удаления будет работать так же, это, не имея сделать «ручной» удалить

Спасибо заранее

+2

mysql или sqlite? удалить неверный тег: – scaisEdge

ответ

1

Вы можете использовать delete с псевдонимом и квантором существования для достижения этого:

delete k 
from K as k 
where exists (
    select * from L as l 
    where l.col1=k.col1 and l.col2=k.col2 
) 
+0

Вы собираетесь удалить неправильную таблицу – Teja

+0

@SOaddict Right. Спасибо! – dasblinkenlight

+0

Спасибо, мой запрос был в основном прав, за исключением того, что у меня был = = предложение where. это помогло! –

0
DELETE FROM K 
WHERE (Col1,Col2) 
    NOT IN 
( 
    SELECT k1.Col1, k1.Col2 
    FROM K k1 
    LEFT OUTER JOIN L l1 
     ON k1.Col1 = l1.Col1 
    AND k1.Col2 = l1.Col2 
    WHERE l1.Col1 IS NULL OR l1.Col2 IS NULL 
); 
Смежные вопросы