2017-03-04 4 views
0

私は現時点でSQLの問題に直面しています。このような表の2つの列の間には一意のキー(id、charid)としてリンクされていますそして、関係私はそれを挿入したりしないようにしたいかどうかを確認したいので、次のことがすでに行が既に存在する場合に挿入する代わりに更新

[charid: 1, id: 1]

が存在する場合、私は、我々が行を挿入しかし場合は、新しい行を挿入するのではなく、それを更新したいことを使用してこれとcharid 1のように、id 1はすでに存在します。それは問題ありません。私たちはそれを挿入できます。

[charid: 1, id: 1]

どのように私はこれを正しく行うことができますか?私はこれがカラムの制限を使うことでできると聞いた。

+0

ユニークキーもプライマリキーですか? – Bohemian

答えて

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 

**編集、実際にあなたが "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

それはあなたが主キーまたは2を持っている場合、あなたの代わりに次の操作を行うことができ、判明:

(ご注意:あなたは、このための少なくとも1つの主キーが必要です)

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

重複するキーがあると、挿入する代わりに行が更新されるようになりました。

関連する問題