我有两个表 A 和 B 包含许多列,其中两个正在使用的是 SKU 和 Typedesc。
我通过在 sku 和 typedesc 上加入 A 和 B 创建了一个表 C
create table C as
select A.*
from A inner join
B
on A.sku=B.sku and trim(A.typedesc)=trim(B.typedesc)
C有大约。130,000 条记录
现在我想删除 C 中存在的 A 中的行
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 不包含任何主键。
即使我直接从 A 中删除 B,删除的行数仍然是 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)
)