postgreSQL-选择ID仅相差1的所有行

时间:2018-12-02 16:46:40

标签: sql postgresql psql

在psql 9.5.6上,我想打印所有ID仅相差一个的名称。

因此输入

name     | id
Harry    | 12
Harry    | 13
Steven   | 14
Steven   | 16
Goldberg | 21

输出应为

   harry

2 个答案:

答案 0 :(得分:1)

您可以使用lead()lag()

select t.name
from (select t.*,
             lag(id) over (partition by name order by id) as prev_id
      from t
     ) t
where prev_id = id - 1;

答案 1 :(得分:1)

    Select name  from table
       group by name having 
      max(id)- min(id)=1;
  

我认为您通过查看输出按组的名称询问了ID差异。可以尝试上面的方法。