2017-03-04 2 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 

** 편집, 실제로는 "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

그것은 밝혀 기본 키 또는이있을 때, 당신은 대신 다음을 수행 할 수

(참고 : 당신은 이것에 대한이어야 하나 개의 기본 키를 필요로 할)

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

이렇게하면 중복 키가있는 경우 무언가를 삽입하는 대신 행을 업데이트합니다.

관련 문제