我想更新列row_number
的{{1}}为1的行数据。但是这种语法提供错误:
p_id
答案 0 :(得分:7)
您无法直接使用ROW_NUMBER()
- 您需要例如使用CTE(通用表格表达式):
;WITH DataToUpdate AS
(
SELECT
SomeID,
p_id,
ROW_NUMBER() OVER(ORDER BY .......) AS 'RowNum'
FROM
dbo.app1
)
UPDATE DataToUpdate
SET p_id = 1
WHERE
RowNum = 1
为了使用ROW_NUMBER
函数,您还需要至少一个ORDER BY
子句来定义行的排序顺序。
从您的问题来看,您不希望通过哪个标准(列)来确定您的ROW_NUMBER()
,并且还不清楚哪种列可以唯一标识一行(以便可以应用UPDATE
)
答案 1 :(得分:1)
这将只更新该年龄段的第一位员工。可用作彩票类型逻辑
create table emp(name varchar(3),Age int, Salary int, IncentiveFlag bit)
insert into emp values('aaa',23,90000,0);
insert into emp values('bbb',22,50000,0);
insert into emp values('ccc',63,60000,0);
insert into emp values('ddd',53,50000,0);
insert into emp values('eee',23,80000,0);
insert into emp values('fff',53,50000,0);
insert into emp values('ggg',53,50000,0);
update A
set IncentiveFlag=1
from
(
Select row_number() over (partition by Age order by age ) AS SrNo,* from emp
)A
where A.SrNo=1
答案 2 :(得分:0)
删除重复项; WITH CTE(名称,地址1,电话,RN) 如 ( SELECT Name,Address1,Phone, ROW_NUMBER()OVER(名称按名称分区)AS RN ) 从CTE DELERE RN>删除1