2017-03-04 73 views
0

我現在面臨着SQL的問題,我已經得到了這樣一個表中的兩列之間的關係,他們作爲唯一鍵(id,charid)鏈接在一起,並利用這層關係,我想確定我是否要插入與否,因此,如果按照已經存在更新,而不是插入,如果行已經存在

[charid: 1, id: 1]

我想更新它,而不是插入新行,但是如果我們插入一行像這樣和charid 1,id 1已經存在,沒關係,我們可以插入它。

[charid: 1, id: 1]

我怎樣才能正確地做到這一點?我聽說這可以通過對列使用限制來完成。

+0

唯一鍵也是主鍵嗎? – Bohemian

回答

0

SQL服務器:

UPDATE R 
SET R.COLUMN = VALUE 
FROM dbo.TABLE1 AS R 
INNER JOIN dbo.TABLE2 AS P 
     ON R.charid = P.id 

**編輯,其實你需要一個 「WHERE EXISTS」 子句的子查詢。會稍微更新一下。

UPDATE R 
SET R.COLUMN = VALUE 
FROM dbo.TABLE1 AS R 
WHERE EXISTS (SELECT P.id 
       FROM dbo.TABLE2 AS P 
       WHERE R.charid = P.id) 
0

事實證明,當你有一個主鍵或兩個,你可以做,而不是執行以下操作:

(請注意:你需要爲這個ATLEAST一個主鍵)

INSERT INTO arcade (id, charid, highscore) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE highscore = ?

這使得當有一個重複的鍵時,它會更新行而不是嘗試插入某些東西!

相關問題