일부 기준에 따라 테이블을 업데이트 중입니다. 해당 기준에 사용할 수있는 행이있을 때만 테이블을 업데이트해야합니다.ONLY 행이 있고 업데이트 된 것을 표시 할 때 테이블을 업데이트하십시오.
IF EXIST (SELECT COUNT(*) FROM TableA INNER JOIN TableB
ON TableA.Product_ID = TableB.ProductID
WHERE TableA.ProductID = 143)
BEGIN
UPDATE TableA
SET A.ProductID = 123
FROM TableA INNER JOIN TableB ON TableA.ProductID = Table.ProductID
WHERE TableA.ProductID = 143
END
문제 : 다음은 내 코드의 예입니다 테이블의 데이터를 업데이트하지만 모든 것을에게 난 단지 기록이있는 경우 업데이트하는 대신 실행할 때마다 업데이트 할 것 같다. 예를 들어 위의 쿼리를 실행하면 (10 row(s) affected)
메시지가 나타납니다. 다시 실행하면 (0 row(s) affected)
을 얻습니다. 테이블이 이미 업데이트되어 IF 문이 결과를 가져 오지 않아야하기 때문입니다.
IF (SELECT COUNT(*) FROM TableA INNER JOIN TableB
ON TableA.Product_ID = TableB.ProductID
WHERE TableA.ProductID = 143) >0
BEGIN
UPDATE TableA
SET A.ProductID = 123
FROM TableA INNER JOIN TableB ON TableA.ProductID = Table.ProductID
WHERE TableA.ProductID = 143
END
문제 : 위의 쿼리는 Command(s) completed successfully
를 반환합니다. 결과적으로 업데이트되는 행 수가 필요합니다. 어떻게해야합니까?
ProductID = 123 인 TableB에는 행이 있습니까? – DVT
@@ ROWCOUNT는 (는) 찾고 계신 것으로 보입니다.하지만 첫 번째 명령의 두 번째 실행에서 아무 것도 업데이트하지 않기를 기대하는 이유를 모르겠습니다. – scsimon
방금 실행하면 어떻게됩니까? "업데이트 A SET ProductID = 123 테이블에서 A 내부 조인 테이블 B B A. A.ProductID = B.ProductID 및 B.ProductID <> 123; " – DVT