Sql 在columnname为1的位置选择displayid和displayorder并将其删除,然后重新排列显示顺序
我需要选择Sql 在columnname为1的位置选择displayid和displayorder并将其删除,然后重新排列显示顺序,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要选择displayid和displayorder,只要columnname为1,将其删除,然后重新排列显示顺序 我创建了一个框架查询来删除列ID并重新排列显示顺序,但不知道如何使用while遍历显示ID。?您可以使用删除。。。从…起join…执行删除的语法: delete di from displaytable di inner join detailstable de on de.column_id = di.column_id and de.columnnam
displayid
和displayorder
,只要columnname
为1,将其删除,然后重新排列显示顺序
我创建了一个框架查询来删除
列ID
并重新排列显示顺序
,但不知道如何使用while遍历显示ID
。?您可以使用删除。。。从…起join…
执行删除的语法:
delete di
from displaytable di
inner join detailstable de
on de.column_id = di.column_id
and de.columnname = 'one'
然后,您可以使用row\u number()
和公共表表达式重新分配新的displayorder
s:
with cte as (
select
di.*,
row_number() over(partition by displayid order by displayorder) rn
from displaytable di
)
update cte set displayorder = rn
重新排列显示顺序?为什么?请阅读的答案和相应的问题。这是我的需要。我正在报告中显示这些列。因此,如果displayid 23中的columnid 1具有displayorder 1。删除columnid1后,我不希望DisplayID23中的其余列再次按顺序显示。否。我没有得到正确的答案。如果未排列显示表的列ID,该怎么办@GMB@user9208802:好的,在这种情况下,您可以将
row_number()over(按displayid按columnid划分)rn
更改为row_number()over(按displayid按displayorder划分)rn
Hi@GMB,我不想更新整个表,没有columnid 1的DisplayID可能很少。我只想更新修改后的显示IDdisplayorder@user9208802:为此,您只需在查询末尾添加where子句:where displayorder!=rn