一尘不染

在MySQL中联接多个不相关的表

sql

我有一个网站,该网站将<select>选项存储在多个表中,并根据单个页面提取所有相关选项。此刻,我结束了这样的查询:SELECT foo FROM foo_tbl;SELECT bar FROM bar_tbl;etc。这确实不是一个坏问题,但是我必须逐个遍历每个选择结果。

我想将所有这些提取到单个网格中,然后执行类似的操作

if $row['foo'] != NULL { add to the foo options }
if $row['bar'] != NULL { add to the bar options }
etc

如果使用类似的查询SELECT DISTINCT f.foo, b.bar FROM foo_tbl AS f, bar_tbl AS b,则会结束所有可能的行组合(第一个foo第一栏,第二个foo第二栏,第二个foo第一栏,第二个foo第二栏等)。

有没有一种方法可以执行这样的选择,并且每个元素在一个列中只有一个实例,并且用空值填充该列中的其余行?


阅读 203

收藏
2021-03-08

共1个答案

一尘不染

您可以执行以下操作:假设表foo的列为a,b,c,表栏的列为d,e,f

Select 'isFOO', a, b, c, null, null, null from foo
Union All
Select 'isBAR',null, null, null, d, e, f from bar
2021-03-08