Como hago lo siguiente copiar una columna de una tabla a otra tabla

publicado por: Anonymous

Me explixo en base de datos como hago si en la data base Usuarios.dbo.Users_Master tengo 18.000 cuentas o mas y cometi el error de sumar 2.000.000 de puntos en la columna puntos pero antes tenia un backup el cual muestra que el maximo de algun usuario era 63.000 puntos ahora necesito hacer un rollback de la columna especifica Puntos si hago restauración pondre que la copia de seguridad de respaldo sera asi : Respaldo.dbo.Users_Master

me imagino que sera un UPDATE mediante un select para que solo se pase esta columna intente con esta pero no funciono. REPITO NO QUIERO HACER SUMAS NI RESTAS solo quiero Copiar mediante un UPDATE la Columna SELECCIONADA crei era asi:

UPDATE b
SET b.point = o.point
FROM Usuarios.dbo.Users_Master  
INNER JOIN Respaldo.dbo.Users_Master 

Pero lo que deseo hacer es si el Usuario Nº 1 en Respaldo.dbo.Users_Master tiene 2 puntos este actualize el Usuarios.dbo.Users_Master el Usuario Nº 1 que tiene 20.000 Puntos asi en todos los registros que tenga la base de Datos con un solo script tuve que hacer esto paso por paso para poder hacer la actualizacion de todas las columnas de Usuarios

SELECT Point, Usuario FROM Respaldo.dbo.Users_Master WHERE Point > 10000

Copie el resultado columna por columna con MauseRecorder para que lo hiciera Automatico Calro ningun humano podria con tanto registro

Luego lanze este UPDATE

UPDATE Usuarios.dbo.Users_Master SET Point = 'PEGUE uno x uno los resutados del Setect respaldo' WHERE Usuario = 'Pegue 1x1 cada Usuario Corespondiente a su puntos de respaldo'

TIENE QUE haber alguna forma mas corta de hacer esto sin copiar ni pegar 1 x Uno

El amigo que me dio este Script no me funciono

UPDATE PS_GameData.dbo.Chars
    SET Family = PS_Restore.dbo.Chars.Family
    FROM PS_GameData.dbo.Chars
INNER JOIN PS_Restore.dbo.Chars
    ON PS_Restore.dbo.Chars.UserUID=PS_GameData.dbo.Chars.UserUID;

me da este error el cual no entiendo

Msg 1013, Level 16, State 1, Line 1
The objects "PS_Restore.dbo.Chars" and "PS_GameData.dbo.Chars" in the FROM clause have the same exposed names. Use correlation names to distinguish them.

Intente con esta Otra pero me da error ya que quiero copiar TODO el registro

UPDATE PS_GameData.dbo.Chars
    SET Family = (SELECT Family FROM PS_Restore.dbo.Chars),
        Job = (SELECT Job FROM PS_Restore.dbo.Chars)

el error que me da es:

Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.

Exito encontre este Script me funciona perfecto ahora quisiera saber por que el del Iner Join nunca me funciono

UPDATE PS_GameData.dbo.Chars
    SET Family = b.Family,
        Job = b.Job
    FROM    PS_Restore.dbo.Chars b
WHERE PS_GameData.dbo.Chars.CharID = b.CharID;  

solución

El JOIN no te funcionó debido a que el manejador de base de datos no sabe si la columna Family es de la base de datos PS_Restore.dbo.Chars o de la PS_GameData.dbo.Chars

Para solucionar esto y que te funcione la sentencia del UPDATE en conjunto con el INNER JOIN debes ponerle un alias a cada tabla:

UPDATE PS_GameData.dbo.Chars
    SET PS_GameData.dbo.Chars.Family = B.Family
FROM PS_GameData.dbo.Chars A
    INNER JOIN PS_Restore.dbo.Chars B
        ON B.UserUID = A.Chars.UserUID;
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *