Tengo una base de datos con account numbersy card numbers. Los relaciono con un archivo con updatecualquier número de tarjeta con el número de cuenta, de modo que solo estoy trabajando con números de cuenta.
Creé una vista que vincula la tabla con la base de datos de la cuenta / tarjeta para devolver el Table IDnúmero de cuenta y el relacionado, y ahora necesito actualizar esos registros donde la ID coincide con el Número de cuenta.
Esta es la Sales_Importtabla, donde el account numbercampo necesita ser actualizado:
LeadID AccountNumber
147 5807811235
150 5807811326
185 7006100100007267039
Y esta es la RetrieveAccountNumbertabla, donde necesito actualizar desde:
LeadID AccountNumber
147 7006100100007266957
150 7006100100007267039
Intenté lo siguiente, pero no tuve suerte hasta ahora:
UPDATE [Sales_Lead].[dbo].[Sales_Import]
SET [AccountNumber] = (SELECT RetrieveAccountNumber.AccountNumber
FROM RetrieveAccountNumber
WHERE [Sales_Lead].[dbo].[Sales_Import]. LeadID =
RetrieveAccountNumber.LeadID)
Actualiza los números de tarjeta a números de cuenta, pero los números de cuenta se reemplazan por NULL
fuente

SI.AccountNumbera, de loAccountNumbercontrario, fallará.UPDATE Sales_Import, RetrieveAccountNumber SET Sales_Import.AccountNumber = RetrieveAccountNumber.AccountNumber where Sales_Import.LeadID = RetrieveAccountNumber.LeadID;. Un poco fuera de tema pero puede ser útilLa manera simple de copiar el contenido de una tabla a otra es la siguiente:
También puede agregar la condición para copiar los datos particulares.
fuente
Para SQL Server 2008 +, el uso
MERGEde laUPDATE ... FROMsintaxis patentada tiene cierto atractivo.Además de ser SQL estándar y, por lo tanto, más portátil, también generará un error en el caso de que haya varias filas unidas en el lado de origen (y, por lo tanto, múltiples valores diferentes posibles para usar en la actualización) en lugar de que el resultado final sea indeterminado .
Desafortunadamente, la elección de cuál usar puede no depender únicamente del estilo preferido. La implementación de
MERGEen SQL Server se ha visto afectada por varios errores. Aaron Bertrand ha compilado una lista de los reportados aquí .fuente
MERGE.Respuesta genérica para futuros desarrolladores.
servidor SQL
Oracle (y SQL Server)
MySQL
fuente
update t1...lugar deupdate Table1...)Para PostgreSQL:
fuente
Parece que está utilizando MSSQL, entonces, si no recuerdo mal, se hace así:
fuente
Tuve el mismo problema con la
foo.newconfiguraciónnullde filasfooque no tenían una clave coincidentebar. Hice algo como esto en Oracle:actualizar foo set foo.new = (seleccione bar.new del bar donde foo.key = bar.key) donde existe (seleccione 1 del bar donde foo.key = bar.key)fuente
Para MySql que funciona bien:
fuente
Esto es lo que funcionó para mí en SQL Server:
fuente
Gracias por las respuestas Encontré una solución aunque.
fuente
En caso de que las tablas estén en bases de datos diferentes. (MSSQL)
fuente
Use el siguiente bloque de consulta para actualizar la Tabla1 con la Tabla2 según la ID:
Esta es la forma más fácil de abordar este problema.
fuente
MS Sql
Oracle 11g
fuente
actualizar dentro de la misma tabla:
fuente
El siguiente SQL que alguien sugirió, NO funciona en SQL Server. Esta sintaxis me recuerda a mi clase de la vieja escuela:
Todas las demás consultas que utilizan
NOT INoNOT EXISTSno se recomiendan. Se muestran NULL porque OP compara el conjunto de datos completo con un subconjunto más pequeño, por lo que, por supuesto, habrá un problema de coincidencia. Esto debe solucionarse escribiendo un SQL adecuado con el problema correcto enJOINlugar de esquivarlo mediante el usoNOT IN. Puede encontrar otros problemas al usarNOT INoNOT EXISTSen este caso.Mi voto por el primero, que es la forma convencional de actualizar una tabla basada en otra tabla uniéndose en SQL Server. Como dije, no puede usar dos tablas en la misma
UPDATEdeclaración en SQL Server a menos que las una primero.fuente
funciona con postgresql
fuente
Pensé que este es un ejemplo simple si alguien se lo pone más fácil,
fuente
Oracle 11g
fuente
Esto le permitirá actualizar una tabla basada en el valor de la columna que no se encuentra en otra tabla.
Esto actualizará una tabla basada en el valor de la columna que se encuentra en ambas tablas.
fuente
prueba esto :
fuente
Me gustaría agregar una cosa extra.
No actualice un valor con el mismo valor, genera un registro adicional y una sobrecarga innecesaria. Vea el ejemplo a continuación: solo realizará la actualización en 2 registros a pesar de vincular en 3.
fuente
Si las respuestas anteriores no funcionan, intente esto
fuente