使用 FIRST 选项
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 语句用作表达式的情况下
LIMIT 关键字
LIMIT 是在 Projection 子句中 FIRST 关键字的关键字同义词。然而,您不可在 FIRST 为有效的
其他语法上下文中以 LIMIT 替换 FIRST,比如在 FETCH 语句中。