我現在面臨着SQL的問題,我已經得到了這樣一個表中的兩列之間的關係,他們作爲唯一鍵(id,charid)鏈接在一起,並利用這層關係,我想確定我是否要插入與否,因此,如果按照已經存在更新,而不是插入,如果行已經存在
[charid: 1, id: 1]
我想更新它,而不是插入新行,但是如果我們插入一行像這樣和charid 1,id 1已經存在,沒關係,我們可以插入它。
[charid: 1, id: 1]
我怎樣才能正確地做到這一點?我聽說這可以通過對列使用限制來完成。
我現在面臨着SQL的問題,我已經得到了這樣一個表中的兩列之間的關係,他們作爲唯一鍵(id,charid)鏈接在一起,並利用這層關係,我想確定我是否要插入與否,因此,如果按照已經存在更新,而不是插入,如果行已經存在
[charid: 1, id: 1]
我想更新它,而不是插入新行,但是如果我們插入一行像這樣和charid 1,id 1已經存在,沒關係,我們可以插入它。
[charid: 1, id: 1]
我怎樣才能正確地做到這一點?我聽說這可以通過對列使用限制來完成。
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)
事實證明,當你有一個主鍵或兩個,你可以做,而不是執行以下操作:
(請注意:你需要爲這個ATLEAST一個主鍵)
INSERT INTO arcade (id, charid, highscore) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE highscore = ?
這使得當有一個重複的鍵時,它會更新行而不是嘗試插入某些東西!
唯一鍵也是主鍵嗎? – Bohemian