表关联时往往只能关联某个值相同的行。
假如说让它关联某一行的上一行该怎么做?
在 SQL 中,要关联排序后某个列的上一行,可以使用子查询和窗口函数来实现。下面是一个示例的 SQL 查询,假设我们有一个名为 table_name 的表,其中包含两列 id 和 value,我们想要根据 value 列的排序结果,关联 id 列上一行的数据:
SELECT t1.* FROM table_name t1 LEFT JOIN table_name t2 ON t1.id = t2.id - 1 ORDER BY t1.value;
在上面的查询中,我们使用了一个自联接操作,将表 table_name 与自身联接,将 t1 和 t2 作为两个别名来引用表的不同行。通过将 t1.id = t2.id - 1 作为联接条件,我们关联了 t1 的上一行数据,即 t2 的 id 列比 t1 的 id 列小 1。
最后,我们使用 ORDER BY 子句按照 value 列的排序结果来返回结果集。
请注意,上述查询假设每行的 id 是唯一的,并且排序列是按照升序进行排序的。如果存在重复的 id 值或者需要降序排序,可能需要根据具体情况进行调整。
假如是不同的表呢?
select id from table1, name= select value from table2 where table2.value>table1.value order by value
alter table "table1"
add column prjscale double precision;update table1 set ;
alter table "table2"
add column prjscale double precision;update table2 set ;
提前计算好保存到表里,避免每一次都进行计算。
浙公网安备 33010602011771号