MySQL UNION互相打印

时间:2009-12-16 11:14:17

标签: sql mysql

如何进行如下的SQL查询:

(SELECT `name` FROM table1)
UNION
(SELECT `name` FROM table2)

互相回报。 IE浏览器。来自table1的name1,来自table2的name1,来自table1的name2,来自table2的name2等等?

编辑: 表1

name
Hello
world

表2

name
guten
tag

输出需要:

Hello
guten
world
tag

如果添加更多联合,这也应该是可能的,因此它需要从第一个联合,然后是第二个,第三个,第四个等等。

3 个答案:

答案 0 :(得分:2)

这有用吗?

set @i = 0;
set @j = 1;

select  @i:=@i+2 as rownumber,
        name
from    table1

union

select  @j:=@j+2 as rownumber,
        name
from    table2

order by rownumber

我将您的问题视为想要从table1中替换一行,从table2中替换一行,依此类推结果集。

根据您的修改进行修改:

将“2”更改为表的数量,并添加与表一样多的变量,并在“set”语句中添加连续的起始值。这将以您想要的方式扩展。

答案 1 :(得分:2)

您可以使用变量对行进行编号,对于union的第一部分使用2,4,6,...,对于第二部分使用3,5,7,...,

select @rownum1 := @rownum1+2 as rownum, name
from (select @rownum1:=0) r, table1
union all
select @rownum2 := @rownum2+2 as rownum, name
from (select @rownum2:=1) r, table2
order by rownum;

from子句(select @rownum2:=1) r中的select仅用于初始化变量。

答案 2 :(得分:0)

与David M类似,你可以这样做:

(SELECT @rownum:=@rownum+1 as rownum,`name` FROM table1, (SELECT @rownum:=0) r)
UNION
(SELECT @rownum:=@rownum+1 as rownum,`name` FROM table2, (SELECT @rownum:=0) r)
order by rownum