【发布时间】:2015-07-02 02:10:46
【问题描述】:
我的问题有点类似于SQL Delete Rows Based on Another Table
除了如果 4 列匹配,则两个条目匹配!
所以,我有:
表1:
Field | Type | Null | Key | Default | Extra
f1 | int(32) unsigned | NO | PRI | NULL | auto_increment
f2 | int(32) | NO | | 0 |
f3 | int(32) | NO | | 0 |
f4 | int(32) | NO | | 0 |
和另一个包含 f1、f2、f3、f4 + 其他字段的表。 我想删除表 1 中与表 2 有对应关系的任何记录,基于
T1.f1=T2.f1 and T1.f2=T2.f2 and T1.f3=T2.f3 and T1.f4=T2.f4
什么是最有效的方法?我虽然在一个程序中检索所有 T1 记录,然后在 T2 上进行 n 次选择,但在 T1 中每次平均有 5k 条记录,我觉得这不是最有效的方式...
编辑: 因为有很多记录,所以我只是在 T2 上的一个字段上创建了一个索引(为了参数的缘故,比如说 field1)
【问题讨论】:
-
从存在的t1中删除(从t2中选择1 ....)
-
你用的是什么数据库引擎?
-
已编辑:我在 oracle dbms 11g 上,一个字段上有一个索引