0
我工作的一个任务来更新其有重复的ID在列 SQL服务器的副本ID的更新等栏目
我们如何能够更新列只DrugLabelName列?我需要使用重复ID为00004029830的new_drug_name更新old_drug_name?
请告知
我工作的一个任务来更新其有重复的ID在列 SQL服务器的副本ID的更新等栏目
我们如何能够更新列只DrugLabelName列?我需要使用重复ID为00004029830的new_drug_name更新old_drug_name?
请告知
如果你想用相同的id
所有行具有相同的名称,你可以使用窗口功能:
with toupdate as (
select t.*,
first_value(druglabelname) over (partition by id order by intid desc) as new_druglabelname
from t
)
update toupdate
set druglabelname = new_druglabelname
where druglabelname <> new_druglabelname;
怎么样?
CREATE TABLE tbl
(INTid int
,ID varchar (20)
,DrugLabelName varchar(200)
)
INSERT tbl (INTid, ID, DrugLabelName)
SELECT 137272, '00004029830', 'old_drug_name'
INSERT tbl (INTid, ID, DrugLabelName)
SELECT 1668177, '00004029830', 'New_drug_name'
INSERT tbl (INTid, ID, DrugLabelName)
SELECT 1668178, '00004029831', 'Other_drug_name'
GO
UPDATE t
SET DrugLabelName = x.DrugLabelName
FROM tbl AS t
INNER JOIN tbl as x
ON t.ID = x.id
AND x.INTid > t.INTid
SELECT *
FROM tbl
DROP TABLE tbl
你怎么知道哪个是旧的,哪个是新的? –
旧的名称总是会有一个较低的INTID? – Scath
我们将基于INTid来了解新旧基础,如果一条记录有最大的INTid,那么它是较新的 – shivareddy