1

私はMySQLを使用しており、2つのクエリ選択SQLがあり、最初のクエリは結果Aを返し、2番目は結果Bを返すので、その2つのクエリ結果を結合したいので、結果AのID列と結果Bのvalue_numが標準列になり、私はそれを試したので副選択を使用することは考えていませんが、クエリプロセスに長い時間がかかります。どうすればこれを行うことができますか?

結果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      +
============================+

結果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     +

-> 2番目の部分では、結合を使用する必要はなく、データを提供します:-

+   6        +  Null        + 44       +
+   7        +  Null        + 55       +
于 2012-09-16T09:41:48.723 に答える