📜  使用 LEVEL 在 SQL 中显示数字序列

📅  最后修改于: 2022-05-13 01:55:37.471000             🧑  作者: Mango

使用 LEVEL 在 SQL 中显示数字序列

术语LEVEL是指 Oracle 中的伪列,用于在层次查询中以数字格式标识层次级别(父->子)。 LEVEL 为根行返回 1,为根行的子行返回 2,依此类推,作为树状结构。 LEVEL 必须与CONNECT BY子句一起使用。 CONNECT BY子句定义层次结构的父行和子行之间的层次关系。 DUAL是 Oracle 数据库与数据字典一起自动生成的虚拟表。

示例 1:

SELECT Level AS Sequence 
FROM Dual
CONNECT BY Level <= 5

解释:
上面的查询将执行具有初始值 1 的来自对偶的 Level,它是虚拟表。 “序列”充当别名,即列的临时名称。在查询中,将检查条件并使用 Connect By 在 Level 值为 1 和指定条件之间创建关系。它将显示值,直到它通过指定的条件。

输出:

Sequence
1
2
3
4
5

从特定数字开始序列:
级别有助于从任何特定的初始值开始一个数字序列。只需在 Connect By 中具有条件的 Level 加一个小于该值的值。

句法:

SELECT Level+(n-1) AS Alias Name
FROM Dual
CONNECT BY Level <= 10

其中 n 是初始特定编号, Alias Name是临时定义的列名称。

示例 2:

SELECT Level+(6-1) AS Sequence 
FROM Dual
CONNECT BY Level <= 10

解释:
用于显示从 6 到 10 的数字序列。在上面的示例中,使用 Connect By 将小于 6 的一个加到 Level 并具有直到 10 的条件。它将执行并将范围指定的值显示为来自虚拟表 Dual 的列名“Sequence”。

输出:

Sequence
6
7
8
9
10

示例 3:

SELECT Level AS Sequence, Sysdate AS System_date  
FROM Dual
CONNECT BY Level <= 5

解释:
上面的查询将执行并显示数字序列和日期。级别具有临时列名称序列和日期具有列名称 System_date,如定义。它将从名为 Dual 的虚拟表中检索数据。根据 Connect By 中指定的条件,它将有 5 行数,从 1 到 5 在 Sequence 列中,并且在 System_date 列中的所有 5 行中具有相同的日期。

输出:

SequenceSystem_date
12019-01-05
22019-01-05
32019-01-05
42019-01-05
52019-01-05