액세스 DB 쿼리 - 특정 레코드를 업데이트하는 데 도움이 필요합니다
-
20-08-2019 - |
문제
티켓을 추적하는 데 사용하는 액세스 DB가 있습니다. 각 티켓은 해당 티켓과 관련된 프로그래밍 변경으로 인해 여러 차례 발생할 수 있습니다. 각 레코드에는 SVR 또는 VB 인 program_type 필드도 있습니다. 예시:
123456 - SVR - SomeCode
123456 - VB - SomeVBCode
VB_FLAG라는 데이터베이스에 열을 추가했습니다. VB 코드가 포함 된 모든 티켓에 대해 기본값이 0으로 표시됩니다. 따라서 여기서 결과는 다음과 같습니다.
123456 - SVR - SomeCode - 1
123456 - VB - SomeVBCode - 1
그러나이 업데이트 쿼리를 작성하는 방법을 제 삶에 대해 알 수 없습니다. 처음에 나는 시도했다 :
UPDATE table SET VB_Flag = 1 WHERE program_type = 'VB'
그러나 그것은 분명히 VB 코드와 티켓 번호를 공유 한 모든 SVR 코드를 제외했습니다.
나는 손실 중입니다. 돕다?
해결책
이것은 작동해야합니다 :
UPDATE table SET VB_Flag = 1
WHERE TicketNum IN (SELECT TicketNum FROM Table WHERE program_type = 'VB')
다른 팁
당신은 다음과 같은 일을 할 수 있습니다 :
UPDATE tickets SET VB_Flag = 1
WHERE ticket_id IN (SELECT ticket_id FROM tickets WHERE program_type = 'VB');
내부 선택 문은 'vb'의 program_type가있는 모든 ticket_ids의 목록을 반환합니다.
그런 다음 업데이트는 Ticket_ids 중 하나 인 모든 레코드에 대해 vb_flag를 1로 설정합니다 (여기에는 'SVR'의 프로그램이 포함됩니다.
테이블 내부 조인 테이블에서 표 2로 표 2로 테이블을 테이블 .ticketNumber = table2.ticketNumber set table2.vb_flag = 1 여기서 (([테이블]. [program_type] = "vb"))
간단한 중첩 선택이 문제를 처리해야합니다.
UPDATE myTable
SET VB_Flag = 1
WHERE TicketID in (Select TicketID from myTable WHERE program_type = 'VB')
제휴하지 않습니다 StackOverflow