Sql 如何从WHERE中选择a.*,从WHERE中选择b.*a.id!=b、 身份证
我对所提出的博士后申请感到很为难 我有一个表objects,其中有几列,包括一个id列。 我有一个表object\u coups,它引用了一对id为的对象。该表包含两列id 我有一个外部变量,比如Sql 如何从WHERE中选择a.*,从WHERE中选择b.*a.id!=b、 身份证,sql,postgresql,subquery,Sql,Postgresql,Subquery,我对所提出的博士后申请感到很为难 我有一个表objects,其中有几列,包括一个id列。 我有一个表object\u coups,它引用了一对id为的对象。该表包含两列id 我有一个外部变量,比如int external\u variable=42 我试图选择对象表中的每个条目,其中所选对象的id和外部变量的id在对象表中不作为一对存在 我的请求如下所示: 选择id、c1、c2 来自对象 其中条件1和条件2 除选择左\u id、右\u id外 来自对象(u)对 WHERE objects.id!
int external\u variable=42
我试图选择对象表中的每个条目,其中所选对象的id和外部变量的id在对象表中不作为一对存在
我的请求如下所示:
选择id、c1、c2
来自对象
其中条件1和条件2
除选择左\u id、右\u id外
来自对象(u)对
WHERE objects.id!=对象\u.left\u id
和外部_变量!=对象\u.right\u id;
我能做什么
编辑1:
以下请求未被拒绝,但在pycharm中导致代码137(SIGKILL):
选择id、c1、c2
将对象作为对象
内部联接对象
在对象上\u.left\u id!=身份证
和对象_coups.right _id!=外部变量
其中S.c1>1234和S.c2<5678```
我认为不存在
:
select o.*
from objects o
where not exists (select 1
from object_couples oc
where (oc.id = oc.left and 42 = oc.right) or
(oc.id = oc.right and 42 = oc.left)
);
对于性能,您可能会发现这样做效果更好:
select o.*
from objects o
where not exists (select 1
from object_couples oc
where oc.id = oc.left and 42 = oc.right
) and
not exists (select 1
from object_couples oc
where oc.id = oc.right and 42 = oc.left
);
特别是,如果在object\u对(左、右)
和object\u对(右、左)
上有索引,那么这可能会很快。向我们展示一些示例表数据和预期结果。(作为格式化文本,而不是图像)我将实现您的贡献,并努力使其发挥作用。非常感谢,我会及时通知你的。昨天第一个请求成功了。我会尝试第二个,因为我确实有时会在执行过程中遇到10秒的延迟!