FIRST
max 选项指定结果集包括不多于
max 行(或正好
max,如果
max 不大于符合条件的行的数目的话)。
不返回满足选择条件的任何附加的行。下例最多从表
tab1 检索 10 行:
SELECT FIRST 10 a, b FROM tab1;
GBase 8s
可使用主变量或在本地变量中指定 max 的 SPL
输入参数的值。
随同 ORDER BY 子句,您可检索符合条件的行的前
max 行。例如,下列查询找到薪酬最高的 10 名雇员:
SELECT FIRST 10 name, salary FROM emp ORDER BY salary DESC;
您可使用在查询中的 FIRST 选项,该查询的结果集在另一 SELECT 语句的 FROM 子句之内定义集合派生的表(CDT)。下列查询指定有不多于 10 行的 CDR:
SELECT *
FROM TABLE(MULTISET(SELECT FIRST 10 * FROM employees
ORDER BY employee_id)) vt(x,y), tab2
WHERE tab2.id = vt.x;
在 FROM 子句中包括表表达式的查询中,FIRST 和 SKIP 关键字还有效:
SELECT * FROM (SELECT SKIP 2 FIRST 8 col1 FROM tab1 WHERE col1 > 50 );
下一示例将 FIRST 选项用于 UNION 表达式的结果:
SELECT FIRST 10 a, b FROM tab1 UNION SELECT a, b FROM tab2;
在任何下列上下文中,FIRST 选项都无效:
- 在视图的定义中
- 在嵌套的 SELECT 语句中
- 在子查询中,除了在 FROM 子句中指定表表达式的那些子查询之外
- 在 SPL 例程之内的单 SELECT 中(此处 max = 1)
- 将嵌套的 SELECT 语句用作表达式的情况下