2013-06-28 5 views
1

업데이트되지 않은 업데이 트, 기록에서 나는 ...SQL 쿼리를 선택

내 업데이트 쿼리의 외모를 2012

그냥 궁금는 SQL 서버를 사용하고 있습니다

UPDATE a 
SET a.TowerNumber=b.SiteNumber 
FROM tower a 
INNER JOIN sites b 
ON a.sitenumber = b.sitenumber 

처럼 내가이 ON 라인 후에해야 할 싶습니다에

EDIT **select records that did not match the ON statement** 

덕분에 같은입니다 advance

+0

당신이 무엇인지 더 잘 설명 할 수 있습니까? 달성하려고? –

+0

어떤 데이터베이스를 사용하고 있습니까? SQL Server? 신탁? MySQL은? 귀하를 도울 수있는 사람들의주의를 끌 수 있도록 태그를 추가하십시오. – DOK

+0

죄송합니다. 다시 시도해 보겠습니다. Update Statement가 업데이트되지 않은 레코드를 찾으려고합니다. 그게 더 명확합니까? – Pakk

답변

2

이 쿼리는 ON (조인) 조건을 충족하지 않았기 때문에 업데이트가 적용되지 않는 모든 행을 반환합니다.

SELECT * 
    FROM tower 
WHERE sitenumber NOT IN 
    (SELECT sitenumber 
     FROM sites) 
+1

"매우 동시적인"환경에서도 결과가 보장됩니까? 그 결과는 선택과 업데이트 작업 사이에서 바뀔 수 있다고 생각합니다. – CyberDude

+0

예, 실제로 했어. – Pakk

+0

예. 동시 업데이트가있는 환경에서는이 기능을 사용할 수 없습니다. – mzedeler

0

나는 당신이 INSTEAD OF 트리거를 사용하고 DELETED 테이블의 사용을 만들려고 수 있다고 생각합니다. 업데이트 작업 중에 업데이트 된 행을 포함해야하므로 초기 테이블의 나머지 행이 표시됩니다 (테이블의 행을 DELETED 테이블에 넣지 마십시오)

+3

방아쇠는 과도 할 것입니다. 업데이트 된 행의 기본 키 값을'OUTPUT '할 수 있습니까? –

+0

실제로 OUTPUT이이 작업의 실제 도구입니다. – CyberDude

관련 문제