我有两张桌子。
table_A
A
----
a
b
c
d
table_B
B
----
1
2
并想要选择它,如下所示
A B
---- ----
a 1
b 2
c null
d null
我如何做出这样的选择。 我需要手术吗?或只是需要'加入语法'? 请帮帮我。
答案 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
<强> RESULT 强>
a b
-------
a 1
b 2
c null
d null