假设我们有一个查询
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'
答案 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