可能与 重复:
或者
我的sql 数据库中有一个表(MainTable ),它有 5 个字段。其中一个字段( FID)是同一数据库中其他 5 个表的外键。另一个字段(TypeID)包含一个 ID,它显示键在FID中属于那 5 个表中的哪个表。例如,如果 MainTable中的一条记录的FID =1000 和TypeID =1,则表示 1000 是第一个表中的主键。
现在我想将这些表加入到一个新表中,所以我创建了一个视图并在这 5 个表和MainTable之间使用了 LEFT OUTER JOIN 命令:
Select * From
(Select * From
(Select * From
(Select * From
(Select * From MainTable LEFT OUTER JOIN Table1 ON MainTable.FID=Table1.ID AND MainTable.TypeID=1)AS Temp1
LEFT OUTER JOIN Table2 ON Temp1.FID=Table2.ID AND Temp1.TypeID=2)AS Temp2
LEFT OUTER JOIN Table3 ON Temp2.FID=Table3.ID AND Temp2.TypeID=3)AS Temp3
LEFT OUTER JOIN Table4 ON Temp3.FID=Table4.ID AND Temp3.TypeID=4)AS Temp4
LEFT OUTER JOIN Table5 ON Temp4.FID=Table5.ID AND Temp4.TypeID=5
1)上述查询是实现此目标的最佳查询吗?
2)有没有办法将结果表的某些列合并到一个特殊的列中?我的意思是,如果结果是这样的:
field1 field2 field3 field4
-------------------------------------------
value1 NULL NULL NULL
NULL value2 NULL NULL
NULL NULL value3 NULL
NULL NULL NULL value4
将其转换为如下所示:
new_field
------------
value1
value2
value3
value4