0

主表:

ID 表名
1 tb_1
2 tb_1
3 tb_1
4 tb_2
5 tb_2
6 tb_2

tb_1:

援助 tb1_id
4 44
5 55
6 66

tb_2:

投标 tb2_id
1 11
2 22
3 33

输出:

ID 表名 tb1_id tb2_id
1 tb_1 1 11
2 tb_1 2 22
3 tb_1 3 33
4 tb_2 44 4
5 tb_2 55 5
6 tb_2 66 6

是否可以使用三个表创建上述输出?例如:当在主表中创建一个新列tb1_id时,这些值是从tb_1 表派生的,这样,如果在主表中有ID下的元素被标记为table_name 列下的tb_1则值tb1_id将与ID列相同,但是对于非tb_1表,它应该取自tb_1表。

4

2 回答 2

1

考虑以下方法

select t.id, t.table_name, 
  ifnull(tb1_id, id) as tb1_id,
  ifnull(tb2_id, id) as tb2_id
from main_table t
left join tb_1 on id = a_id 
left join tb_2 on id = b_id             

如果应用于您问题中的样本数据 - 输出是

在此处输入图像描述

于 2021-11-12T20:18:35.847 回答
-1
insert into output 
    as select 
        maintable.ID,
        maintable.Table_Name 
        maintable.ID as tb1_id,
        tb_1.a_id as tb2_id
    from tb_1 a
    inner join maintable on tb_1.a_id = maintable.ID
 union
    select 
        maintable.ID,
        maintable.Table_Name 
        tb_2.b_id as tb1_id,
        maintable.ID as tb2_id
    from tb_2 b
    inner join maintable on tb_2.b_id = maintable.ID
于 2021-11-12T20:03:40.737 回答