Update com Join

Para atualizar registros de uma tabela com dados que estão em uma tabela diferente podemos utilizar UPDATE com JOIN, como vou demostrar a seguir.

No exemplo a coluna [descricaoProfissao] da tabela [Pessoa] e atualizada com o conteúdo da coluna [descricao] que esta a tabela [Profissao], para isso temos que fazer um JOIN utilizando a PK e FK [idProfissao]. Os campos que eu posso atualizar neste caso são somente os correspondentes ao alias [Pes] da tabela [Pessoa] , pois é o que esta indicado depois da palavra [UPDATE] que identifica o que será atualizado.

-- Select 1
SELECT idProfissao , -- PK
       descricao
  FROM Profissao

-- Select 2
SELECT idPessoa , -- PK
       idProfissao , -- FK
       nome ,
       descricaoProfissao
  FROM Pessoa

-- Update com JOIN
UPDATE Pes
   SET Pes.descricaoProfissao = Pro.descricao ,
       Pes.nome = Pes.nome + ' - ' + Pro.descricao
  FROM Pessoa AS Pes
  LEFT JOIN Profissao AS Pro ON Pro.idProfissao = Pes.idProfissao
 WHERE Pes.idPessoa = 999

O exemplo e simples e ilustrativo, mas pode ajudar.

Scripts que identificam tabelas sem Primary Key ou com Primary Key

-- Sem Primary Key:
USE siga_Main;
SELECT u.name, o.name
FROM sysobjects o
INNER JOIN sysusers u ON o.uid = u.uid
WHERE xtype = 'U' AND NOT EXISTS
(SELECT i.name FROM sysindexes i WHERE o.id = i.id AND (i.status & 2048)<>0)

-- Com Primary Key:

SELECT u.name, o.name, i.name
FROM sysobjects o
INNER JOIN sysindexes i ON o.id = i.id
INNER JOIN sysusers u ON o.uid = u.uid
WHERE (i.status & 2048)<>0