1

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

结果一:

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

结果 B:

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

结合结果 A 和结果 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       +
============================+==========+

谢谢

4

2 回答 2

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
于 2012-09-16T07:57:03.490 回答
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       +
于 2012-09-16T09:41:48.723 回答