none
UPDATE EM VÁRIOS REGISTROS. RRS feed

  • Pergunta

  • Galera, preciso de uma ajuda.

    Tenho um campo da tabela1.campolivre  que precisa ser atualizada para o valor da tabela2.campo2, porém são vários registros. Quando vou utilizar uma subquery não deixa atualizar, informa que tem muitos registros e não faz.  Só que é isso mesmo que eu preciso, atualizar vários registros com um único valor.

    Abaixo a query q estou utilizando.

    UPDATE FCFO

    SET
    FCFO.CAMPOLIVRE = '03'

    (SELECT CAMPOLIVRE,FCFOCOMPL.ATENDE 
    FROM FCFO 
    INNER JOIN FCFOCOMPL ON FCFO.CODCFO = FCFOCOMPL.CODCFO
    WHERE FCFO.CODCOLIGADA = '3' 
    AND FCFOCOMPL.CODCOLIGADA = '3'
    AND ATENDE IS NOT NULL
    AND ATENDE = '03')

    sexta-feira, 9 de setembro de 2016 12:59

Respostas

  • seria deste jeito:

    UPDATE FCFO SET FCFO.CAMPOLIVRE = FCFOCOMPL.ATENDE  FROM FCFO 
    INNER JOIN FCFOCOMPL ON FCFO.CODCFO = FCFOCOMPL.CODCFO
    WHERE FCFO.CODCOLIGADA = '3' 
    AND FCFOCOMPL.CODCOLIGADA = '3'
    AND ATENDE IS NOT NULL
    AND ATENDE = '03'

    Só um detalhe, esse criterio "ATENDE IS NOT NULL AND ATENDE = '03'" pode ser escrito como somente ATENDE = '03', porque se ATENDE é igual à 03 entao automaticamente ele nao é nulo.

    Essa query faz a mesma coisa:

    UPDATE FCFO SET FCFO.CAMPOLIVRE = FCFOCOMPL.ATENDE  FROM FCFO 
    INNER JOIN FCFOCOMPL ON FCFO.CODCFO = FCFOCOMPL.CODCFO
    WHERE FCFO.CODCOLIGADA = '3' 
    AND FCFOCOMPL.CODCOLIGADA = '3'
    AND ATENDE = '03'
    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    sexta-feira, 9 de setembro de 2016 13:13

Todas as Respostas

  • seria deste jeito:

    UPDATE FCFO SET FCFO.CAMPOLIVRE = FCFOCOMPL.ATENDE  FROM FCFO 
    INNER JOIN FCFOCOMPL ON FCFO.CODCFO = FCFOCOMPL.CODCFO
    WHERE FCFO.CODCOLIGADA = '3' 
    AND FCFOCOMPL.CODCOLIGADA = '3'
    AND ATENDE IS NOT NULL
    AND ATENDE = '03'

    Só um detalhe, esse criterio "ATENDE IS NOT NULL AND ATENDE = '03'" pode ser escrito como somente ATENDE = '03', porque se ATENDE é igual à 03 entao automaticamente ele nao é nulo.

    Essa query faz a mesma coisa:

    UPDATE FCFO SET FCFO.CAMPOLIVRE = FCFOCOMPL.ATENDE  FROM FCFO 
    INNER JOIN FCFOCOMPL ON FCFO.CODCFO = FCFOCOMPL.CODCFO
    WHERE FCFO.CODCOLIGADA = '3' 
    AND FCFOCOMPL.CODCOLIGADA = '3'
    AND ATENDE = '03'
    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    sexta-feira, 9 de setembro de 2016 13:13
  • Quando eu preciso executar varios updates eu faço assim ,espero que re ajude!

    crio um resultset com os ids que quero atualizar e abaixo coloco os criterios no where

    UPDATE  FCFO

    SET     FCFO.CAMPOLIVRE = '03'
    WHERE  FCFO.IdTabela IN (SELECT    IdTabela
      FROM      FCFO
                INNER JOIN FCFOCOMPL ON FCFO.CODCFO = FCFOCOMPL.CODCFO
      WHERE     FCFO.CODCOLIGADA = '3'
                AND FCFOCOMPL.CODCOLIGADA = '3'
                AND ATENDE IS NOT NULL
                AND ATENDE = '03'  )


    Wesley Neves

    sexta-feira, 9 de setembro de 2016 13:13
  • Boa tarde,

    Devido a falta de resposta do usuário
    essa thread está sendo fechada.
    Se o problema ainda estiver ocorrendo,
    favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 12 de setembro de 2016 15:42