我的问题由以下查询表示:
SELECT
b.row_id, b.x, b.y, b.something,
(SELECT a.x FROM my_table a WHERE a.row_id = (b.row_id - 1), a.something != 42 ) AS source_x,
(SELECT a.y FROM my_table a WHERE a.row_id = (b.row_id - 1), a.something != 42 ) AS source_y
FROM
my_table b
Run Code Online (Sandbox Code Playgroud)
我使用相同的子查询语句两次,以获得两者source_x
和source_y
.这就是为什么我想知道是否可以只使用一个子查询来做到这一点?
因为一旦我对我的真实数据(数百万行)运行此查询,它似乎永远不会完成并花费数小时,如果不是几天(我的连接在结束前挂起).
我正在使用PostgreSQL 8.4