2017-06-16 77 views
0

更新兩次專欄中,我有一個表使用這些值:如何使用SQL

Name  | id 
---------------- 
Blue guy | 20 
Green girl | 10 

id列是一個獨特的價值。我要的是更新藍色的傢伙ID爲10,在我想更新綠色女孩ID爲20。我目前SQL查詢相同的查詢是:

UPDATE colorpeople SET id = 20 
WHERE name = 'Blue guy'; 

我在哪裏可以指定要更新綠色女孩?

+0

看看這個問題,並接受的答案:https://stackoverflow.com/questions/20255138/sql-update-multiple-records-in-one - 查詢 –

+0

邏輯上它是兩個更新語句,因爲它是附加了不同條件的兩個不同值。但是你可以按照上面給出的鏈接把它合併成一個聲明。它只能真正擴展到兩個或三個值,如果你需要爲大量的行做它,它會變得笨拙。 – ADyson

+0

通常,這種事情是在三步交易中完成的 - 1.將20更新爲x。 2.更新10到20. 3.將x更新爲10。 – Strawberry

回答

3

試試這個:

UPDATE colorpeople 
SET id = (case 
      when name = 'Blue guy' then 10 
      when name = 'Green girl' then 20 
      else id = id 
      end) 
0

你應該嘗試這樣的事:

INSERT INTO colorpeople id VALUES 10, 20 
ON DUPLICATE KEY UPDATE id=VALUES(id); 
-1

如果要更新已經存在

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'); 
0

的最佳方式唯一的密鑰這樣做使用WHERE子句:

1

請嘗試以下腳本:

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)