如果行已存在则更新而不是插入

时间:2017-03-04 21:43:19

标签: mysql

我现在面临着SQL的一个问题,我在这样的表中有两个列之间的关系它们作为唯一键(id,charid)链接在一起并使用该关系我想确定是否我想插入或不插入,所以如果以下已经存在

[charid: 1, id: 1]

我想更新它而不是插入新行,但是如果我们插入这样的行和charid 1,id 1已经存在,那就没关系,我们可以插入它。

[charid: 1, id: 1]

我怎样才能正确地做到这一点?我听说这可以通过使用列的限制来完成。

2 个答案:

答案 0 :(得分:0)

SQL Server:

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 )

答案 1 :(得分:0)

事实证明,当你有一两个主键时,你可以改为:

(请注意:您确实需要至少一个主键)

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

这使得当有重复键时,它会更新行而不是尝试插入某些内容!