Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将同一SQL多次合并_Sql_Oracle - Fatal编程技术网

如何将同一SQL多次合并

如何将同一SQL多次合并,sql,oracle,Sql,Oracle,我有这样的疑问 select 1,2,3 from dual union all select 1,2,3 from dual 当我需要添加新行时,我会添加另一个union all,这没关系。但当我需要几个联合体时,问题就出现了,例如20个联合体。再成立17个工会真的很烦人,效率也不高。有没有一种方法(一些程序、函数等等)可以使它更快、更优雅?没问题,很简单 SQL> select 1, 2, 3 2 from dual 3 connect by level <= 10

我有这样的疑问

select 1,2,3 from dual
union all
select 1,2,3 from dual

当我需要添加新行时,我会添加另一个union all,这没关系。但当我需要几个联合体时,问题就出现了,例如20个联合体。再成立17个工会真的很烦人,效率也不高。有没有一种方法(一些程序、函数等等)可以使它更快、更优雅?

没问题,很简单

SQL> select 1, 2, 3
  2  from dual
  3  connect by level <= 10;

         1          2          3
---------- ---------- ----------
         1          2          3
         1          2          3
         1          2          3
         1          2          3
         1          2          3
         1          2          3
         1          2          3
         1          2          3
         1          2          3
         1          2          3

10 rows selected.

SQL>
SQL>选择1、2、3
2从双
3.分层连接

没问题,很简单

SQL> select 1, 2, 3
  2  from dual
  3  connect by level <= 10;

         1          2          3
---------- ---------- ----------
         1          2          3
         1          2          3
         1          2          3
         1          2          3
         1          2          3
         1          2          3
         1          2          3
         1          2          3
         1          2          3
         1          2          3

10 rows selected.

SQL>
SQL>选择1、2、3
2从双
3.分层连接

在这种情况下,有时使用json_表更容易:

选择*
从json_表(
{数据:[
[1,2,3,“abc”],
[2,3,4,“定义”],
[3,4,5,“xyz”],
]
}'
,“$.data[*]”
柱
数字路径“$[0]”,
b编号路径“$[1]”,
c编号路径“$[2]”,
d varchar2(30)路径“$[3]”
);
结果:

         A          B          C D
---------- ---------- ---------- ------------------------------
         1          2          3 abc
         2          3          4 def
         3          4          5 xyz

有时在这种情况下使用json_表更容易:

选择*
从json_表(
{数据:[
[1,2,3,“abc”],
[2,3,4,“定义”],
[3,4,5,“xyz”],
]
}'
,“$.data[*]”
柱
数字路径“$[0]”,
b编号路径“$[1]”,
c编号路径“$[2]”,
d varchar2(30)路径“$[3]”
);
结果:

         A          B          C D
---------- ---------- ---------- ------------------------------
         1          2          3 abc
         2          3          4 def
         3          4          5 xyz

Littlefoot答案的一个变体:

select 1, 2, 3
from   xmltable('1 to 20');

Littlefoot答案的一个变体:

select 1, 2, 3
from   xmltable('1 to 20');

SQL并不擅长生成数据,而是查询数据并在已经存在的数据上提供结果。这里的一种方法是只生成一个包含任意多行的平面CSV文件,然后使用Oracle的loader工具将其移动到一个表中。@TimBiegeleisen我需要这样做,因为Jaspert这里提出了一个类似的mysql问题:-不确定Oracle是否允许类似的东西..SQL不太擅长生成数据,而是查询它并在已经存在的数据上提供结果。这里的一种方法是只生成一个包含任意多行的平面CSV文件,然后使用Oracle的loader工具将其移动到一个表中。@TimBiegeleisen我需要这样做,因为Jaspert这里提出了一个类似的mysql问题:-不确定Oracle是否允许类似的操作..我认为这很尴尬,甲骨文仍然不支持标准的
@a_horse_,没有名字是的,我经常想念它。。。并生成_系列。。。但是考虑到CBO已经很复杂,它支持多少特性/转换等,我认为保守一点也不坏。至少,我认为有一个好的计划者比有大量错误的语法结构要好。我觉得很尴尬,Oracle仍然不支持标准的
@a_horse\u和\u no\u name是的,我经常错过它。。。并生成_系列。。。但是考虑到CBO已经很复杂,它支持多少特性/转换等,我认为保守一点也不坏。至少,我认为有一个好的规划器比有大量错误的语法结构要好。