Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在columnname为1的位置选择displayid和displayorder并将其删除,然后重新排列显示顺序_Sql_Sql Server_Tsql - Fatal编程技术网

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