不懂。 到底是要从A表生成B表,还是要从B表生成A表? 好象是你是意思是A表中可能是 col1 col2 --------- 2 b 1 a 3 c生成的B表也还是要按下面来: col1 --- 1 a 2 b 3 c要是想这样也不难: select f2 as col1 from ( select col1 as f1,col1 as f2 from a union (select col1 as f1,col2 as f2 from a) t1 ) order by t1.f1,t1.f2
select: 你的意思大概是把每一行的col2排到本行的col1下面吧。但是, 既然表A本身都是无序的,次次得到如下结果都不可能: col1 col2 -------- 1 a 2 b 3 c ... 何谈别的……呢?如果得到3c2b1a的结果也满足需要,不妨引入一个递增的变量x, select col from ( select col1 col,x*2 seq union select col2 col,x*2+1 seq ) order by seq; 至于这个x怎么来,不同的数据库有不同的方法,以上只是伪代码。
1
2
3
。
。
a
b
c
.
是排序的,并且消除重复的数据
:)
我最不能理解的是为什么要得到无序的结果?
到底是要从A表生成B表,还是要从B表生成A表?
好象是你是意思是A表中可能是
col1 col2
---------
2 b
1 a
3 c生成的B表也还是要按下面来:
col1
---
1
a
2
b
3
c要是想这样也不难:
select f2 as col1
from
(
select col1 as f1,col1 as f2
from a
union
(select col1 as f1,col2 as f2
from a) t1
) order by t1.f1,t1.f2
你的意思大概是把每一行的col2排到本行的col1下面吧。但是,
既然表A本身都是无序的,次次得到如下结果都不可能:
col1 col2
--------
1 a
2 b
3 c
...
何谈别的……呢?如果得到3c2b1a的结果也满足需要,不妨引入一个递增的变量x,
select col from
(
select col1 col,x*2 seq
union
select col2 col,x*2+1 seq
)
order by seq;
至于这个x怎么来,不同的数据库有不同的方法,以上只是伪代码。