0
UPDATE MyTable SET Status = (SELECT CASE WHEN COUNT(*) > 0
THEN 0
ELSE 1
END
FROM MyTable
WHERE Status = 1)
WHERE RowNumber BETWEEN 1 AND 5
ORDER BY RowNumber
이 상태를 MyTable에 하나 개의 행이 될 것입니다 하위 쿼리의 테이블과 동일 = 1 이있는 경우 나, 5 ROWNUMBER 1을 업데이트하는 동안 Status = 1 인 기존 레코드 인 경우RowNumber 1에서 5는 0으로 업데이트되고 RowNumber 2에서 5는 0으로 업데이트됩니다.업데이트 테이블은 내가하고 싶은 것은
그러나 위 쿼리는 일. 하위 쿼리는 전체 쿼리 전에 실행되고 하위 쿼리의 결과는 정적이어서 다른 하나가 업데이트 된 후에 하나의 레코드로 새 결과를 제공하지 않는다는 것을 의미합니다.
이 쿼리에서 Status = 1 인 테이블에 행이 없으면 모든 RowNumber 1-5가 Status = 1로 업데이트됩니다. 이것은 예상 한 것이 아닙니다.
내가 원하는 것은 내 테이블에 상태 = 1 인 행이 하나만있을 것입니다. status = NULL 인 새 행이 삽입되었습니다. 나중에 상태 = 0 또는 1로 업데이트됩니다. 따라서 상태 = 1 인 기존 행이있는 경우 분명히 새 업데이트가 0으로 설정됩니다. 아니오 인 경우, 업데이트 행 중에서, 그 중 하나만 1로 설정됩니다. 이해할 수 있습니까? –