31 votos

¿SQL: Cómo actualizar los valores de la tabla desde otra tabla con el mismo nombre de usuario?

Tengo dos tablas, con una misma columna Nombre user_name, diciendo Tabla_A, Tabla_B. ¿Quiero a copiar desde Tabla_B, column_b_1, column_b2, table_b1, column_a_1, column_a_2, respectivamente, donde el usuario es el mismo, como hacerlo en sql declaración?

72voto

martin clayton Puntos 41306

Como el tiempo que tienen los adecuados índices en lugar de esto debería funcionar bien:

UPDATE table_a
SET
      column_a_1 = (SELECT table_b.column_b_1 
                            FROM table_b
                            WHERE table_b.user_name = table_a.user_name )
    , column_a_2 = (SELECT table_b.column_b_2
                            FROM table_b
                            WHERE table_b.user_name = table_a.user_name )
WHERE
    EXISTS (
        SELECT *
        FROM table_b
        WHERE table_b.user_name = table_a.user_name
    )

ACTUALIZACIÓN en sqlite3 no admite una cláusula FROM, lo que hace de este un poco más de trabajo que en otros RDBMS.

Si el rendimiento no es satisfactorio, otra opción podría ser la de construir nuevas filas para table_a el uso de un selecto y unirse con table_a en una tabla temporal. A continuación, elimine los datos de table_a y la repoblación de la temporal.

1voto

fiendniu Puntos 11

En la cláusula donde existe,

Esto es obligatorio "seleccionar * de Tabla_B donde table_b.user_name = table_a.user_name"

cualquier diferencia si sólo seleccionar todas las filas en una columna, como

"SELECT nombre_usuario FROM Tabla_B donde table_b.user_name = table_a.user_name"

¿La diferencia significa el rendimiento será más rápida?

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X