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