SQL DB (2008 R2)에서 업데이트하려고하지만 어떤 이유로 업데이트가 예상보다 많이 발생합니다. 내 위치, 가입 및 업데이트 명령에 문제가 있다고 생각하지만 범위와 조작 순서에 대한 정보를 찾는 데 문제가 있습니다. 다행히도 프로덕션에서 변경하기 전에 복원되는 DB 백업을 연습하고 있습니다!예상보다 많은 SQL 업데이트 명령이 발생했습니다.
비슷한 결과 (가입 및 업데이트) 인 this 링크를 찾았지만, 제 경우에는 적용하기가 어렵습니다.
testUnitCount가 15578 인 경우 unitNo를 05101에서 05088로 변경하려고합니다. 어떤 이유로이 값은이 TestNumber에 대한 모든 UnitNo를 이동시킵니다. OLAP DB (Cubes)이기 때문에 모든 테이블에서 사람들이 익숙하지 않은 것보다 더 복잡해 보일 수 있습니다.
SELECT DashboardData.TestNumber, TestUnits.unitNo, TestUnitCounts.testUnitCount
FROM DashboardData INNER JOIN
TestUnitCounts ON DashboardData.TestUnitCountID = TestUnitCounts.testUnitCountID INNER JOIN
MeasurementData ON TestUnitCounts.testUnitCountID = MeasurementData.TestUnitCountID INNER JOIN
TestUnits ON DashboardData.TestUnitID = TestUnits.testUnitID AND TestUnitCounts.testUnitID = TestUnits.testUnitID AND
MeasurementData.TestUnitID = TestUnits.testUnitID
where unitNo='05101'
AND TestNumber='1024'
AND TestUnitCounts.testUnitCount='15578'
order by testUnitCount asc
UPDATE TestUnits
SET unitNo='05088' where unitNo='05101'
사람이 명령이 그래서 난 그냥 테스트 1024 unitNo 05101-> 05088에 대한 15578의 testUnitCount을 변경하는 변경해야합니다 알고 있나요
: 나는이 시간을 명령 올바른 줄 알았는데? 왜 그 모든 TestNumber를 변경합니까?여기 내 CTE 시도가 똑같습니다.
Use OLAP05132014C
GO
WITH QueryName_CTE (unitNo,TestNumber,testUnitCount)
AS
(
SELECT DashboardData.TestNumber, TestUnits.unitNo, TestUnitCounts.testUnitCount
FROM DashboardData INNER JOIN
TestUnitCounts ON DashboardData.TestUnitCountID = TestUnitCounts.testUnitCountID INNER JOIN
MeasurementData ON TestUnitCounts.testUnitCountID = MeasurementData.TestUnitCountID INNER JOIN
TestUnits ON DashboardData.TestUnitID = TestUnits.testUnitID AND TestUnitCounts.testUnitID = TestUnits.testUnitID AND
MeasurementData.TestUnitID = TestUnits.testUnitID
where unitNo='05101'
AND TestNumber='1024'
AND TestUnitCounts.testUnitCount='15578'
)
Update QueryName_CTE
SET unitNo='05088' where unitNo='05101'
선택과 관련된 행만 업데이트하려고합니까? 그것이 위에있는 방식으로, 그것들은 서로 다른 두 가지 진술 ..... ..... 서로 관련이 없습니다. CTE를 검색하여 작은 그룹의 항목을 업데이트 할 수 있습니다. – granadaCoder
예, 선택 영역의 행만 업데이트하려고합니다. 나는 CTE를 찾는 것에 대해 들어 본 적이 없다. 무슨 소리 야? – Michele
CTE 접근 방식 인 답변을 추가했습니다. – granadaCoder