如何在SQLite中使用多个条件删除?

时间:2016-07-04 23:09:47

标签: sqlite

例如,我有以下表格:

morse_matrix <- sapply(df, function(x) ifelse(grepl("Morse", x), grep("Morse", x), NA))

morse_list <- sapply(df, function(x) ifelse(grep("Morse", x), grep("Morse", x), NA))

morse_df <- data.frame(morse_matrix)

我想从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); 行中删除t1id1id2中的t2相匹配的行,但我希望保留id1id2 {1}}匹配,或者如果两者都不匹配。

也就是说,我想删除第2行(因为11在两个表中都存在id1),3(因为12在两个表中都存在id2),但不是第1行(因为元组(11,12)出现在两个表中,第4行也出现(因为13 id1中没有出现,而id2中的t2中没有11)

在MySQL中,我认为我可以使用子查询来做到这一点,但我不认为它在SQLite中是允许的。怎么办呢?

1 个答案:

答案 0 :(得分:2)

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));