例如,我有下表:
create table t1(id1 int, id2 int, info text);
create table t2(id1 int, id2 int);
insert into t1 values(11, 12, "a");
insert into t1 values(11, 13, "b");
insert into t1 values(12, 13, "c");
insert into t1 values(13, 11, "d");
insert into t1 values(16, 17, "e");
insert into t2 values(11, 12);
insert into t2 values(15, 13);
insert into t2 values(12, 14);
我想从
t1
或id1
与id2
匹配的行中删除,除非我想保留t2
和id1
匹配的行,或者如果两个都不匹配的行。也就是说,我要删除第2行(因为在两个表中11都作为
id2
存在,第3行(因为在两个表中12都以id1
存在),但不删除第1行(因为出现了元组(11,12))在两个表中),也不行4(因为id2
中没有出现13,而在id1
中的id2
中没有出现11),也不行5。在MySQL中,我认为可以使用子查询来做到这一点,但我认为SQLite不允许这样做。如何才能做到这一点?
最佳答案
SQLite允许子查询。尽管我对理解这个问题并不满意,但我怀疑这样的方法会起作用:
delete from t1 where exists
(select * from t2 where (t2.id1 = t1.id1 or t2.id2 = t1.id2)
and not (t2.id1 = t1.id1 and t2.id2 = t1.id2));
关于sqlite - 如何在SQLite中使用多个条件删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38193223/