gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 18:45:21 25 4
gpt4 key购买 nike

例如,我有下表:

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匹配的行中删除,除非我想保留 t2id1匹配的行,或者如果两个都不匹配的行。

也就是说,我要删除第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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com