如何进行如下的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
如果添加更多联合,这也应该是可能的,因此它需要从第一个联合,然后是第二个,第三个,第四个等等。
答案 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