发布网友
共3个回答
热心网友
感觉有点绕
我理解的楼主的意思是这样
不知道对不对
如果table1中不存在col2这条记录
则删除table2中对应的记录
delete from table2
where ouid2=
(select ouid2 from table1 where col2 is null)追问要是这么简单我就不问了。。。简单说吧,就是table1中的col1这一列记录的是其他表的表名,col2是对应的那个表的其中一条数据的ouid,比如说:col1:proct,col2:proct@87abc。这么一条数据,我就需要判断一下在proct这个表中是否有ouid为proct@87abc这么一条数据。。。可懂?
追答判断表proct中ouid是不是与table1 中的col2匹配,如果不匹配则删除table2中ouid2=table2.ouid2的数据
如果是这个意思的话,试下 这个 sql
delete from table1
where ouid2 =
(select ouid2
from table1
where col2 =
(select b.col2 from proct a, table2 b where a.ouid != b.col2))
热心网友
按你说的好像用到动态SQL会是最简洁的写法,可惜我不太熟,给你个笨点的办法——直接用not exists,删除语句如下:
delete table2 where not exists(select 1 from table1 where col1 = 'table2' and col1 = table2.ouid2)
这会把table2中所有ouid2字段值在TABLE1中找不到对应col1的记录全部删除。
如果有多个表要处理的话,比如还有TABLE3、TABLE4什么的,就多写几次这个语句,把TABLE2换成别的表了,呵呵。
热心网友
如果数据中col1中对应的表中如果不存在col2这条记录是col2 is null的意思吗?