Tengo una base de datos con account numbers
y card numbers
. Los relaciono con un archivo con update
cualquier 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 ID
nú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_Import
tabla, donde el account number
campo necesita ser actualizado:
LeadID AccountNumber
147 5807811235
150 5807811326
185 7006100100007267039
Y esta es la RetrieveAccountNumber
tabla, 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.AccountNumber
a, de loAccountNumber
contrario, 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
MERGE
de laUPDATE ... FROM
sintaxis 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
MERGE
en 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.new
configuraciónnull
de filasfoo
que no tenían una clave coincidentebar
. Hice algo como esto en Oracle: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 IN
oNOT EXISTS
no 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 enJOIN
lugar de esquivarlo mediante el usoNOT IN
. Puede encontrar otros problemas al usarNOT IN
oNOT EXISTS
en 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
UPDATE
declaració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