-1

我对四个不同的表有四个 Select 查询,每个表只提取一条记录。例如:

Select * from table where col1 = 'something'

给出具有 3 列的一行.

第二个选择查询还给出了一条具有两列(字段)的记录。第三和第四个选择查询相同。

我想将所有四个结果集组合成一个有一行的结果集。这怎么可能?

我会为你写查询

第一个

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')

第三个查询使用从查询 2 获得的结果

Select column4 ,column3 from table 3 
where column3 = (obtained from 2nd query) (there is only one row)

第 4 名

Select column5 from table 4 
where column3 = (obtained from 2nd query) (there is only one row)

这意味着我必须加入 2nd ,3rd ,4th 查询然后结果集 int 1st

我不能使用联合,因为列不同

所以唯一的问题是加入结果集

我希望它能解释

结果集Sql查询1

列 1 列 2

啊啊啊啊啊啊

sql查询2

列 1 列 3

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

sql查询3

列 3 列 4

cccc dddd

sql查询4

列 3 列 5

cccc eeee

结果集

列 1 列 2 列 3 列 4 列 5

aaa bbb cccc dddd eeee

希望结果集能解释一切

4

2 回答 2

1

通过添加列使所有查询的列号和类型相同(即使您不需要它们):

Select column4, column3 from table 3 
where column3 = ...

Select column5, column3 from table 4 
where column3 = ...

顺便说一句,您的查询似乎可以大大简化。目前非常混乱。

也许您应该重新表述您的问题,用英语解释您正在尝试做什么以及您的表架构是什么,并让我们建议整个查询。

于 2012-08-10T05:27:41.227 回答
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
于 2012-08-10T07:01:56.050 回答