#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