我对四个不同的表有四个Select查询,每个表只提取一个记录。例如:
Select * from table where col1 = 'something'
给出一行有3列。
第二个选择查询还会给出一个包含两列(字段)的记录。对于第三和第四选择查询也是如此。
我想将所有四个ResultSet组合成一行。怎么可能?
我会为你编写查询
第一个
Select Top 1 column1,column2 from table 1 where column 1 = 'something'
and col1 = (Select max(col1) where column 1 = 'something')
第二次查询
Select Top 1 column1 , column3 from table 2 where column 1 = 'something'
and column3 = (Select max(column3) where column 1 = 'something')
第3次查询使用从查询2获得的结果
Select column4 ,column3 from table 3
where column3 = (obtained from 2nd query) (there is only one row)
第四
Select column5 from table 4
where column3 = (obtained from 2nd query) (there is only one row)
这意味着我必须加入第2,第3,第4个查询,然后结果set int 1st
由于列不同,我不能使用union
所以加入结果集只有问题
我希望它解释
结果集 Sql query1
column1 column2
aaa bbb
SQL查询2
column1 column3
aaa cccc
Sql query 3
column3 column4
cccc dddd
sql query 4
column3 column5
cccc eeee
结果集
coulumn1 column2 column3 column4 column5
aaa bbb cccc dddd eeee
希望reultset解释一切
答案 0 :(得分:1)
通过添加列使所有查询的列号和类型相同(即使您不需要它们):
Select column4, column3 from table 3
where column3 = ...
Select column5, column3 from table 4
where column3 = ...
顺便说一下,您的查询可能会大大简化。现在很乱。
也许你应该重新说明你的问题,用英语解释你想要做什么以及你的表架构是什么,让我们建议整个查询。
答案 1 :(得分:0)
create table table1(c1 varchar(10), c2 varchar(10), c3 varchar(10), c4 varchar(10), c5 varchar(10));
create table table2(c1 varchar(10), c2 varchar(10), c3 varchar(10), c4 varchar(10), c5 varchar(10));
create table table3(c1 varchar(10), c2 varchar(10), c3 varchar(10), c4 varchar(10), c5 varchar(10));
create table table4(c1 varchar(10), c2 varchar(10), c3 varchar(10), c4 varchar(10), c5 varchar(10));
insert into table1 values (1,2,3,4,5);
insert into table2 values (1,5,3,7,8);
insert into table3 values (1,15,3,17,18);
insert into table4 values (1,22,3,24,25);
with max3 as
(select c1, max(c3) c3 from table2 where table2.c1 = 1 group by c1)
select table1.c1, table1.c2, max3.c3, table3.c4, table4.c5
from table1
join max3
on max3.c1 = table1.c1
join table3
on table3.c3 = max3.c3
join table4
on table4.c3 = max3.c3
where table1.c1 = 1;
输出
c1 c2 c3 c4 c5
1 2 3 17 25