更新兩次專欄中,我有一個表使用這些值:如何使用SQL
Name | id
----------------
Blue guy | 20
Green girl | 10
的id
列是一個獨特的價值。我要的是更新藍色的傢伙ID爲10,在我想更新綠色女孩ID爲20。我目前SQL
查詢相同的查詢是:
UPDATE colorpeople SET id = 20
WHERE name = 'Blue guy';
我在哪裏可以指定要更新綠色女孩?
更新兩次專欄中,我有一個表使用這些值:如何使用SQL
Name | id
----------------
Blue guy | 20
Green girl | 10
的id
列是一個獨特的價值。我要的是更新藍色的傢伙ID爲10,在我想更新綠色女孩ID爲20。我目前SQL
查詢相同的查詢是:
UPDATE colorpeople SET id = 20
WHERE name = 'Blue guy';
我在哪裏可以指定要更新綠色女孩?
試試這個:
UPDATE colorpeople
SET id = (case
when name = 'Blue guy' then 10
when name = 'Green girl' then 20
else id = id
end)
你應該嘗試這樣的事:
INSERT INTO colorpeople id VALUES 10, 20
ON DUPLICATE KEY UPDATE id=VALUES(id);
如果要更新已經存在
UPDATE colorpeople SET id = -20 WHERE naam = 'Blue guy';
UPDATE colorpeople SET id = -10 WHERE naam = 'Green girl';
UPDATE colorpeople SET id = -id WHERE naam in ('Blue guy', 'Green girl');
的最佳方式唯一的密鑰這樣做使用WHERE
子句:
請嘗試以下腳本:
ALTER TABLE colorpeople DROP CONSTRAINT PK_colorpeople
UPDATE colorpeople SET ID = 10 WHERE Name = 'Blue guy'
UPDATE colorpeople SET ID = 20 WHERE Name = 'Green girl'
ALTER TABLE colorpeople ADD CONSTRAINT PK_colorpeople PRIMARY KEY /* CLUSTERED */ (ID)
看看這個問題,並接受的答案:https://stackoverflow.com/questions/20255138/sql-update-multiple-records-in-one - 查詢 –
邏輯上它是兩個更新語句,因爲它是附加了不同條件的兩個不同值。但是你可以按照上面給出的鏈接把它合併成一個聲明。它只能真正擴展到兩個或三個值,如果你需要爲大量的行做它,它會變得笨拙。 – ADyson
通常,這種事情是在三步交易中完成的 - 1.將20更新爲x。 2.更新10到20. 3.將x更新爲10。 – Strawberry