【发布时间】:2011-01-10 17:25:24
【问题描述】:
代码:
create table coltype (coltype varchar(5));
insert into coltype values ('typ1');
create table colsubtype (coltype varchar(5), colsubtype varchar(5));
insert into colsubtype values ('typ2', 'st1');
insert into colsubtype values ('typ2', 'st2');
create table table1 (col1 varchar(5), coltype varchar(5), colsubtype varchar(5));
insert into table1 values ('val1','typ1', 'st1');
insert into table1 values ('val2','typ1', 'st2');
insert into table1 values ('val3','typ1', 'st3');
insert into table1 values ('val4','typ2', 'st1');
insert into table1 values ('val5','typ2', 'st2');
insert into table1 values ('val6','typ2', 'st3');
insert into table1 values ('val7','typ3', 'st1');
insert into table1 values ('val8','typ3', 'st2');
insert into table1 values ('val9','typ3', 'st3');
commit;
基本上,我想删除coltype 和colsubtype 在coltype 和colsubtype 表中未提及的所有记录。
我该怎么做。以下是我正在考虑采取的路径,但它不起作用 - 而且 - 它似乎不是一个好的设计。
delete from table1
where coltype != (select coltype from coltype)
OR not (coltype = cst.coltype and colsubtype = cst.colsubtype
from (select coltype, colsubtype from colsubtype) cst)
【问题讨论】:
-
样本数据错误?您在
colsubtype表的插入中将 'typ2' 引用为coltype,但您没有将该值插入到coltype表中。
标签: sql-server join sql-delete