es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

MySQL unir dos tablas y obtener la suma

Tengo una tablaA:

+------+--------+-------+
| name | code   | num   |
+------+--------+-------+
| A    | no1    | 300   |
| A    | no2    | 100   |
+------+--------+-------+

también tengo una tablaB:

+------+--------+-------+
| name | code   | num   |
+------+--------+-------+
| A    | no1    | -100  |
| A    | no5    | 77    |
| B    | no7    | 2     |
+------+--------+-------+

Mi objetivo es obtener tablaC como esto:

+------+--------+-------+
| name | code   | num   |
+------+--------+-------+
| A    | no1    | 200   |
| A    | no2    | 100   |
| A    | no5    | 77    |
| B    | no7    | 2     |
+------+--------+-------+

Usé union y join, pero el resultado no es correcto, por favor dígame cómo obtener TablaC?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener tablaC, puedes usar UNION ALL para combinar las filas de tablaA y tablaB, y luego agrupar los resultados por nombre y código, mientras se suman los valores de num. Aquí está la consulta que puede usar:

    SELECT nombre, código, SUM(num) as num
    FROM (
        SELECT nombre, código, num
        FROM tablaA
        UNION ALL
        SELECT nombre, código, num
        FROM tablaB
    ) as temp
    GROUP BY nombre, código
    

    Esto te dará la salida deseada en tablaC. Ten en cuenta que utilizamos UNION ALL en lugar de solo UNION para incluir todas las filas de ambas tablas, incluso si hay duplicados.

Comments are closed.