【发布时间】:2013-06-04 20:48:19
【问题描述】:
我有两个表 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 条记录
现在我想删除 A 中存在于 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 不包含任何主键。
即使我直接从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)
)
【问题讨论】: