mysql,选择两个表,然后合并结果

时间:2017-11-01 19:12:33

标签: mysql sql database

我有两张桌子。

table_A
  A    
  ---- 
  a    
  b    
  c    
  d    


table_B
  B    
  ---- 
  1    
  2    

并想要选择它,如下所示

  A      B   
  ----  ---- 
  a      1
  b      2
  c     null
  d     null

我如何做出这样的选择。 我需要手术吗?或只是需要'加入语法'? 请帮帮我。

3 个答案:

答案 0 :(得分:1)

SQL表表示无序结果。您可以将值并排放置(如我所示),但如果没有指定排序的列,则每个列表中的顺序是任意的。

select max(a) as a, max(b) as b
from ((select (@rna := @rna + 1) as rn, a, null as b
       from a cross join (select @rna := 0) params
      ) union all
      (select (@rnb := @rnb + 1) as rn, null as a, b
       from b cross join (select @rnb := 0) params
      ) 
     ) ab
group by rn;

答案 1 :(得分:0)

您可以使用join来在select语句中执行此操作。

一个例子可能是:

SELECT a.value, b.value
FROM a
  left outer join b on a.id = b.id;

但是这要求您拥有与单独表中的行相关的主键/外键。

您的表格需要看起来像这样:

table_A   
  --id--value-- 
   123     a    
   214     b    
   567     c    
   455     d    


table_B   
  --id--value-- 
   123     1    
   214     2 

答案 2 :(得分:0)

如果您有mysql with 8.0.2及更高版本,则可以使用窗口函数

select t.a, tb.b
from
(
  select a, count(*) over (order by a) rn
  from table_a
) t
left join table_b tb on t.rn = tb.b

demo

<强> RESULT

a   b
-------
a   1
b   2
c   null
d   null