Вы можете использовать синтаксис delete ... from ... join ...
для удаления:
delete di
from displaytable di
inner join detailstable de
on de.column_id = di.column_id
and de.columnname = 'one'
Затем вы можете переназначить новые displayorder
s, используя row_number()
и общее табличное выражение:
with cte as (
select
di.*,
row_number() over(partition by displayid order by displayorder) rn
from displaytable di
)
update cte set displayorder = rn