使用SQL Server,我需要从Filename列中包含’value’的任何表中返回整行(每个表包含一列),但这些表的列数不同,每个表都有唯一的列使用他们自己的特定数据类型(他们共有的唯一列名称/类型是我需要检查’value’的Filename列).
理想情况下,我可以做以下事情:
SELECT * FROM Table1,Table2,Table3,Table4,Table5
WHERE Filename =’someValue’
由于所有表共享文件名的相同列名.
我尝试使用Union但由于表的列数和数据类型不对齐而存在问题.
我也试过了我能找到的JOIN的每一个组合.
我确信这可以通过IF EXISTS完成,但这将是许多很多行,似乎是不必要的代码.希望有一个更优雅的解决方案.
提前致谢!
最佳答案 您可以尝试将表连接在一起.首先创建存储输入的临时表.然后使用此临时表连接表以获取所需的所有记录.当表中没有该文件名的记录时,您将获得NULL值.
create table Table1 (id int,value int);
insert into Table1 values (1,10)
create table Table2 (id int,value int);
insert into Table2 values (1,20)
create table Table3 (id int,value int);
insert into Table3 values (2,30)
这是查询本身
create table #tmp (id int)
insert into #tmp
values (1)
select t.id, t1.value, t2.value, t3.value from #tmp as t
left join Table1 as t1
on t.id = t1.id
left join Table2 as t2
on t.id = t2.id
left join Table3 as t3
on t.id = t3.id
这就是你得到的
id value value value
1 10 20 NULL