将mysql查询的2个结果集合并为一个

时间:2013-03-30 11:13:57

标签: mysql

示例:

第一次查询:

select A,B,C from tb1;

---------------
A     B     C 
---------------
1     1     3
2     1     4

第二次查询:

select E from tb2;

---------------
E     
---------------
8    
9

所需的结果格式应如下所示: -

-----------------------
A     B     C     E
-----------------------
1     1     3     8
2     1     4     9

请告诉我查询如何获得结果集。

3 个答案:

答案 0 :(得分:0)

如果你可以在两个表中添加一个列id来标识每个表的行号,那么

可以使表的结构更好。

然后您可以轻松合并两个具有相同ID的表。这里的关系是id列。

然后你可以这样做

 select A, B, C , E from Table1 t1
 inner join Table2 t2
 on  t1.id = t2.id

请参阅此DEMO HERE

中的结构化表格

结果:

    A   B   C   E
    1   1   3   8
    2   1   4   9

希望它可以帮到你!

答案 1 :(得分:0)

SQL表本质上是无序的。这会产生一个问题,因为表中没有任何内容可以指定行的顺序,这似乎是两个表之间的连接。

所以,你必须屏住呼吸并做出一些假设。特别假设是select返回的数据是您在表中所需的实际顺序(如果您在表中删除或在并行环境中运行,则可能会有所不同。)

以下代码为每个表添加id。然后可以将此id用于连接:

select t1.A, t1.B, t1.C, t2.D
from (select t1.*, @rn := @rn + 1 as id
      from tbl1 t1 cross join (select @rn := 0)
     ) t1 left outer join
     (select t2.*, @rn := @rn + 1 as id
      from tbl2 t2 cross join (select @rn := 0)
     ) t2
     on t1.id = t2.id

答案 2 :(得分:0)

你好,这对你有帮助

你可以这样尝试

SELECT * FROM tb1,tb2

你得到像

这样的输出
-----------------------
A     B     C     E
-----------------------
1     1     3     8
2     1     4     9