Pergunta

Eu tenho um DB acesso que usamos para rastrear bilhetes. Cada bilhete pode ter várias ocorrências por causa das diferentes alterações de programação associados com esse bilhete. Cada registro tem também um campo program_type que é SVR ou VB. Exemplo:

123456 - SVR - SomeCode

123456 - VB - SomeVBCode

Eu adicionei uma coluna para o banco de dados chamado VB_Flag, cujo padrão é 0, o que eu gostaria de mudar para o número 1 para cada bilhete contendo código VB. Assim, o resultado aqui seria:

123456 - SVR - SomeCode - 1

123456 - VB - SomeVBCode - 1

Mas, eu não consigo descobrir para a vida de mim como escrever essa consulta atualização. No começo eu tentei:

UPDATE table SET VB_Flag = 1 WHERE program_type = 'VB'

Mas isso, obviamente, deixado de fora todo o código do SVR, que compartilharam um número de bilhete com o código VB.

Eu estou em uma perda. Ajuda?

Foi útil?

Solução

Isso deve funcionar:

UPDATE table SET VB_Flag = 1 
WHERE TicketNum IN (SELECT TicketNum FROM Table WHERE program_type = 'VB')

Outras dicas

Você pode fazer algo como isto:

UPDATE tickets SET VB_Flag = 1
WHERE ticket_id IN (SELECT ticket_id FROM tickets WHERE program_type = 'VB');

A instrução SELECT interna retorna uma lista de todos os ticket_ids que têm um program_type de 'VB'.

A atualização, em seguida, define o VB_Flag a 1 para todos os registros com uma daquelas ticket_ids (que inclui aqueles com uma program_type de 'SVR'.

Atualização Tabela INNER JOIN tabela como Tabela2 EM Table.TicketNumber = Table2.TicketNumber CONJUNTO Table2.VB_Flag = 1 ONDE (([Tabela]. [Program_type] = "VB"))

Um simples SELECT aninhada deve cuidar de seu problema:

UPDATE myTable
SET VB_Flag = 1 
WHERE TicketID in (Select TicketID from myTable WHERE program_type = 'VB')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top