将多个查询与一个标准列组合在一起

时间:2012-09-16 07:53:04

标签: mysql sql select

我使用MySQL,我有2个Query Select SQL,第一个Query将返回结果A,第二个将返回结果B,所以我想要结合两个查询结果,结果A的ID列和结果B的value_num成为标准列,我不认为使用subselect,因为我已经尝试过,在查询过程中需要花费很长时间,我该怎么做?

结果A:

+------------+--------------+
+  ID        +  Name        +
+------------+--------------+
+   1        +  Steve       +
+   2        +  Mile        +
+   3        +  Santo       +
+   4        +  Del Piero   +
+   5        +  Jack        +
============================+

结果B:

+------------+--------------+
+  Valuenum  +  value       +
+------------+--------------+
+   1        +      20      +
+   2        +      30      +
+   6        +      44      +
+   7        +      55      +
============================+

结合结果一个丹结果B,下面是我期望的输出。

+------------+--------------+----------+
+ID_valuenum +  Name        + value    +
+------------+--------------+----------+
+   1        +  Steve       + 20       +
+   2        +  Mile        + 30       +
+   3        +  Santo       + Null     +
+   4        +  Del Piero   + Null     +
+   5        +  Jack        + Null     +
+   6        +  Null        + 44       +
+   7        +  Null        + 55       +
============================+==========+

由于

2 个答案:

答案 0 :(得分:2)

select
  ta.Id as ID_Valuenume
  ,ta.name
  ,tb.value
from TableA ta
left join TableB tb on ta.ID=tb.valuenum
union
select
  tb.valuenum
  ,ta.name
  ,tb.value
from TableB tb
left join TableA ta on ta.ID=tb.valuenum

答案 1 :(得分:0)

您必须使用UNION

 select ra.ID as ID_valuenum,
        ra.Name,rb.value from ResultA ra left join ResultB rb on ra.ID=rb.Valuenum 

        UNION

        select rb.Valuenum,null as Name,rb.value from ResultB where rb.Valuenum not in 
    (select ID from ResultB)

- >在第一部分中,您必须使用左连接,以便为您提供数据

+------------+--------------+----------+
+ID_valuenum +  Name        + value    +
+------------+--------------+----------+
+   1        +  Steve       + 20       +
+   2        +  Mile        + 30       +
+   3        +  Santo       + Null     +
+   4        +  Del Piero   + Null     +
+   5        +  Jack        + Null     +

- >在第二部分中,不需要使用任何连接,然后它将提供数据: -

+   6        +  Null        + 44       +
+   7        +  Null        + 55       +