我现在面临着SQL的一个问题,我在这样的表中有两个列之间的关系它们作为唯一键(id,charid)链接在一起并使用该关系我想确定是否我想插入或不插入,所以如果以下已经存在
[charid: 1, id: 1]
我想更新它而不是插入新行,但是如果我们插入这样的行和charid 1,id 1已经存在,那就没关系,我们可以插入它。
[charid: 1, id: 1]
我怎样才能正确地做到这一点?我听说这可以通过使用列的限制来完成。
答案 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 = ?
这使得当有重复键时,它会更新行而不是尝试插入某些内容!