[英]How to UPDATE column with ROW_NUMBER() in Teradata?
我有這樣的桌子
Create table test1(emp_id decimal(5,0), emp_name varchar(20));
Insert into test1(2015,'XYZ');
Insert into test1(2016,'XYZ2');
現在,我想將emp_id更新為row_number()或將新列添加到同一表中,例如將(emp_no integer)添加到row_number()。
誰能告訴我這個查詢嗎?
您需要使用UPDATE FROM:
UPDATE test1
FROM
( SELECT ROW_NUMBER() OVER (ORDER BY emp_id) AS rn,
emp_id
FROM test1
) AS src
SET emp_id = src.rn
WHERE test1.emp_id = src.emp_id -- must be unique column(s)
順便說一句,與其更新表的所有行,不如將INSERT / SELECT或SELECT合並到新表中可能更好。 如果沒有唯一列,你必須做到這一點,你應該如果emp_id
是你的表的PI(否則性能會可怕)。
Create table test1(
emp_id decimal(5,0),
emp_name varchar(20),
emp_no INTEGER GENERATED ALWAYS AS IDENTITY
(START WITH 1
INCREMENT BY 1
)
);
Insert into test1(2015,'XYZ1',2);
Insert into test1(2016,'XYZ2',2);
Insert into test1(2015,'XYZ3',null);
Insert into test1(2016,'XYZ4',null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.