У меня есть две таблицы A и B, содержащие много столбцов, два из которых используются как SKU и Typedesc.Удалить строки, присутствующие в другой таблице
Я создал таблицу C путем присоединения А и В на идентификатор и typedesc
create table C as
select A.*
from A inner join
B
on A.sku=B.sku and trim(A.typedesc)=trim(B.typedesc)
С имеет прибл. 130000 записей
Теперь я хочу, чтобы удалить строки в которых присутствуют в C
delete from A A1
where exists (select 1
from C c1
where A1.sku=c1.sku and trim(A1.typedesc)=trim(c1.typedesc)
)
Это говорит 145,000 строк удаляются.
Откуда взялись дополнительные 15 000 строк? Что-то не так с моим запросом на удаление? Поэтому, когда я присоединяюсь к двум таблицам, C также должен иметь 145 000, но вместо этого он имеет только 130 000! почему это так? A или B не содержит первичного ключа.
Даже если я удалю B из A напрямую, количество удаленных строк останется 145 000.
delete from A A1
where exists (select 1
from B b1
where A1.sku=b1.sku and trim(A1.typedesc)=trim(b1.typedesc)
)