테스트 환경에서 SQL Server 2008 R2 Express를 사용하고 프로덕션 환경에서 전체 버전을 사용하고 있습니다. 업데이트하려는 모든 레코드를 찾는 select 문을 작성했습니다. 약 1200 명. 여러 테이블을 조인하고 선택 항목은 여러 필드를 기반으로합니다.SQL Server : 조인 된 테이블의 여러 레코드 업데이트
': 00 : 00.000 2015년 1월 14일 00'내가받은 내가 원하는 것은하는 것입니다
일치하는 모든 레코드가 같은 즉 dFinalised가 설정되어 업데이트 된 신청이 UPDATE 문에이를 켭니다 업데이트 쿼리를 실행할 때 다음 오류가 발생했습니다.
하위 쿼리가 두 개 이상의 값을 반환했습니다. 하위 쿼리가 =,! =, <, < =,>,> = 또는 하위 쿼리가 식으로 사용될 때 하위 쿼리가 수행되는 경우에는 허용되지 않습니다.
나는 어떻게 든 이걸 중첩시켜야 할 것으로 기대하지만 따르기 쉬운 예제를 찾을 수 없다. 사전 데이비드
SELECT 문에
덕분에
SELECT lMeetingRegisterID
,sPlanNumber
,sName
,sDescription
,dMeeting
,sMeetingTime
,bManaged
FROM [Strata].[dbo].[MeetingRegister]
inner Join MeetingType on MeetingRegister.lMeetingTypeID = meetingtype.lMeetingTypeID
inner Join OwnersCorporation on MeetingRegister.lOwnersCorporationID = OwnersCorporation.lOwnersCorporationID
inner Join tbluser on OwnersCorporation.lUserID = tblUser.lUserID
WHERE dFinalised = '1900-01-01 00:00:00.000'
AND dMeeting < '2014-07-01 00:00:00.000'
AND bManaged != 'N'
가 여기에 업데이트 쿼리에서 내 시도이다 매우 간단하다.
Update dbo.MeetingRegister
set dFinalised = '2015-01-14 00:00:00.000'
from dbo.MeetingRegister
inner Join MeetingType on MeetingRegister.lMeetingTypeID = meetingtype.lMeetingTypeID
inner Join OwnersCorporation on MeetingRegister.lOwnersCorporationID = OwnersCorporation.lOwnersCorporationID
inner Join tbluser on OwnersCorporation.lUserID = tblUser.lUserID
Where dFinalised = '1900-01-01 00:00:00.000'
AND dMeeting < '2014-07-01 00:00:00.000'
AND bManaged = 'N'
그것은 당신의 값을 두 개 이상 가입하거나 하위 쿼리 반환한다는 것을 의미 당신은 하나의 홀더에 할당하려고합니다. 단일 값을 반환하려면 하위 쿼리를 잘라야합니다. –
'MeetingRegister' 테이블에 트리거가 정의되어 있습니까? – peterm
peterm <예이 테이블에는 트리거가 있습니다. –