如何复制sql查询中的每一行?

时间:2014-12-04 11:31:26

标签: sql oracle11g

假设我们有一个查询

SELECT * FROM my_table ORDER BY id

导致

id | title
-----------
 1 | 'ABC'
 2 | 'DEF'
 3 | 'GHI'

如何修改给定的select语句,使结果集中的每一行都重复:

id | title
-----------
 1 | 'ABC'
 1 | 'ABC'
 2 | 'DEF'
 2 | 'DEF'
 3 | 'GHI'
 3 | 'GHI'

3 个答案:

答案 0 :(得分:2)

试试这个......

 SELECT * FROM my_table 
 UNION ALL
 SELECT * FROM my_table
 ORDER BY id

答案 1 :(得分:1)

您可以使用union all,但我喜欢使用cross join

select *
from MyTable cross join
     (select 1 from dual union all select 2 from dual) n
order by id;

我喜欢cross join的原因是MyTable实际上是一些复杂的子查询。虽然查询优化器可能只评估一次,但您实际上并不依赖于这一事实。因此,在这种情况下,性能应该更好。

答案 2 :(得分:0)

您可以交叉连接到行生成器,数值表示每个原始文件的重复数量。

select *
from my_table 
     cross join
       (select null
        from dual
        connect by level <= 2)
order by id