Sql 如何从WHERE中选择a.*,从WHERE中选择b.*a.id!=b、 身份证

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!

我对所提出的博士后申请感到很为难

我有一个表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!=对象\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秒的延迟!