这是一个鸿沟和孤岛的问题。在sql中,这是一种使用窗口函数解决它的方法:
select Id, IdRef, myColumn, anotherColumn
from (
select t.*, lag(myColumn) over(partition by IdRef order by Id) lagMyColumn
from mytable t
) t
where lagMyColumn is null or lagMyColumn <> myColumn
内部查询回收价值myColumn
的上 以前 行,通过有序Id
。然后,外部查询将根据记录中的值与当前行中的值不同的记录进行过滤。
:
id | idref | mycolumn | 另一列
-:| ----:| -------:| :------------
448 | 70 | 1 | 228
455 | 70 | 2 | 2a8
458 | 70 | 3 | v
460 | 70 | 4 | 22
461 | 70 | 3 | 54
462 | 70 | 4 | 45
463 | 70 | 3 | s28