SQL从自身具有内部联接的表中选择

SQL从自身具有内部联接的表中选择,sql,sqlite,Sql,Sqlite,我有一张桌子(实际上是一个视图) 现在我需要选择所有行的id,对于这些行,该行中的所有值和一个给定行的值之和小于零 x1+y1+x2+y2+x3+y3+x4+y4

我有一张桌子(实际上是一个视图)

现在我需要选择所有行的id,对于这些行,该行中的所有值和一个给定行的值之和小于零

x1+y1+x2+y2+x3+y3+x4+y4<0

事实上我有更复杂的公式,但现在没关系了。我知道我必须创建这个表的内部联接,但仍然不能组成正确的表达式


如果需要的话,我使用SQLite+Python。表中大约有10万行,有效结果可以是从全部到无。

如果我正确理解您的意图,下面的内容应该可以:

SELECT a.id
FROM mytable a
JOIN mytable b ON b.id=some_special_value
WHERE a.x1 + a.x2 + a.y1 + a.y1 + b.x1 + b.x2 + b.y1 + b.y2 < 0
选择一个id
从我的表a
在b.id=some\u特殊值上连接mytable b
其中a.x1+a.x2+a.y1+a.y1+b.x1+b.x2+b.y1+b.y2<0

您需要获取下一行。假设这是比给定行的id大的最小id。以下内容使用相关子查询计算下一个id,然后加入下一行的信息:

select *
from (select t.*,
             (select t2.id from t t2 where t2.id > t.id order by t2.id limit 1
             ) nextId
      from t
     ) t left outer join
     t tnext
     on t.nextId = tnext.Id
where (t.x1 + t.y1 + t.x2 + t.y2) + (tnext.x1 + tnext.y1 + tnext.x2 + tnext.y2) < 0

“一个给定行”是什么意思?我从表中选取一行,并希望选择与所选行之和小于零的所有其他行。很抱歉,我没有理解。问题不在于行的顺序。谢谢你的帮助。
select *
from (select t.*,
             (select t2.id from t t2 where t2.id > t.id order by t2.id limit 1
             ) nextId
      from t
     ) t left outer join
     t tnext
     on t.nextId = tnext.Id
where (t.x1 + t.y1 + t.x2 + t.y2) + (tnext.x1 + tnext.y1 + tnext.x2 + tnext.y2) < 0
select *
from t left outer join
     t tnext
     on t.id + 1 = tnext.id
where (t.x1 + t.y1 + t.x2 + t.y2) + (tnext.x1 + tnext.y1 + tnext.x2 + tnext.y2) < 0