MySQL объединяет две таблицы и получает сумму

#mysql #join #union

#mysql #Присоединиться #союз

Вопрос:

у меня есть tableA :

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

у меня также есть tableB :

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

Моя цель состоит в том, чтобы стать tableC таким:

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

я использовал union и join,но результат не тот,пожалуйста, подскажите, как его получить TableC ?

Комментарии:

1. Покажите, как использовать ваш код, иначе довольно сложно дать вам хороший ответ.

2. @Forbs,мой код :выберите TableB.name,TableB.код ,TableB.num IFNULL(TableA.num,0) как s из таблицы Присоединить таблицу на tableA.name = tableB.name;

Ответ №1:

Итак, вместо JOIN того, что вам нужно, есть UNION . Вы можете использовать « UNION ALL » или « UNION «, это зависит от того, хотите ли вы дублировать строки или нет.

В любом случае, после UNION группы , которая приведет к подзапросу, чтобы получить SUM()

 SELECT u.name, u.code, SUM(u.num), FROM ( SELECT name, code, num FROM tableA UNION ALL SELECT name, code, num FROM tableB ) u GROUP BY u.name, u.code