Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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 使用update语句中的当前行_Sql_Sql Update_Row Number_Inner Query - Fatal编程技术网

Sql 使用update语句中的当前行

Sql 使用update语句中的当前行,sql,sql-update,row-number,inner-query,Sql,Sql Update,Row Number,Inner Query,我想做的是: 我有一个包含多个作者的表SingleAuthor。此表有时多次包含同一作者。我要做的是更新表并添加作者特定的编号。例如: 卫星名称->卫星行号 弗雷迪->1 作者2->2 弗雷迪->1 另一个->3 我已经有了给出以下结果的查询: 在(按卫星名称排序)上选择行号(), 卫星名称 来自SingleAuthor 按卫星名称分组 但问题是,我想在sat\u rowNumber列中插入此数据。 我提出了这样一个问题: UPDATE SingleAuthor SET sat_rowNumb

我想做的是: 我有一个包含多个作者的表
SingleAuthor
。此表有时多次包含同一作者。我要做的是更新表并添加作者特定的编号。例如:

卫星名称->卫星行号
弗雷迪->1
作者2->2
弗雷迪->1
另一个->3

我已经有了给出以下结果的查询:

在(按卫星名称排序)上选择行号(),
卫星名称
来自SingleAuthor
按卫星名称分组

但问题是,我想在
sat\u rowNumber
列中插入此数据。 我提出了这样一个问题:

UPDATE SingleAuthor SET sat_rowNumber = (   SELECT newTable.numb 
                                            FROM(
                                                SELECT ROW_NUMBER() OVER( ORDER BY sat_name) as numb, sat_name 
                                                FROM SingleAuthor  
                                                GROUP BY sat_name) AS newTable 
                                            WHERE newTable.sat_name =) -- the current row in the to be updated table
我要做的是将
SingleAuthor
表的
sat\u行数
更新为
newTable.numb
,其中当前行
sat\u名
等于
newTable
中的
sat\u名


关于如何在update语句中引用待更新表的任何见解?

您的问题的答案是:

where newTable.sat_name = SingleAuthor.sat_name
它将引用外部表,因为子查询中的表超出范围。但是,如果这是一个问题,您可以给子查询中的别名不同

我认为您可以更高效地编写查询,如下所示:

with toupdate as (
    select sa.*, dense_rank() over (order by sat_name) as newVal
    from SingleAuthor sa
)
update toupdate
    set sat_RowNumber = newval
densite\u rank()
函数的作用与聚合值上的
row\u number()
完全相同