关于union的MySQL查询

时间:2016-04-15 16:37:11

标签: mysql sql

table A
=======
Name  |  Qty
------------
AA    |  1
BB    |  2
CC    |  3
DD    |  4


table B
=======
Name  |  Qty
------------
AA    |  0
BB    |  0
EE    |  0
ZZ    |  0

我需要这个作为resoult

Name  |  Qty
------------
AA    |  1
BB    |  2
CC    |  3
DD    |  4
EE    |  0
ZZ    |  0

怎么做?我尝试使用联盟,但没有获得转发

2 个答案:

答案 0 :(得分:0)

这似乎是一个优先级查询,您希望记录来自a,如果不存在,则来自b。这是一种方法:

select a.*
from a
union all
select b.*
from b
where not exists (select 1 from a where a.name = b.name);

答案 1 :(得分:-1)

如果您希望联合合并总计。

 SELECT Name, SUM(Qty)
 FROM (
      SELECT Name, Qty
      FROM TableA
      UNION ALL 
      SELECT Name, Qty
      FROM TableB
      ) T
GROUP BY Name

确保使用UNION ALL,这样就不会丢失重复的行。