GBase8s数据库SELECT 语句3

使用 TOP 选项

TOP 选项支持以下两种方式:

• TOP N :指定取得结果集中前 N 条记录。

• TOP M,N :指定取得结果集中第 M 条记录之后的 N 条记录。

您可检索前 N 个符合条件的行。例如,下列查询将找到薪酬最高的 10 名雇员:

SELECT TOP 10 name, salary FROM employee ORDER BY salary DESC;

下列查询将找到薪酬第二高的雇员:

SELECT TOP 1,1 name, salary FROM employee ORDER BY salary DESC;

使用 SKIP、FIRST、TOP、LIMIT 或 MIDDLE 作为列名称

如果没有整数紧跟在 FIRST 关键字之后,则数据库服务器将 FIRST 解释为列标识符。例如,如

果表 T 有列 first、second 和 third,则下列查询会从名为 first 的列返回数据:

SELECT first FROM T

同样的考虑也适用于 TOP、SKIP 和 LIMIT 关键字。如果 Projection 子句中的 LIMIT 关键字之

后没有字面整数也没有整数变量,则 GBase 8s 将 LIMIT 解释作为列名称。如果 FROM 子句中

的数据源不具有带有该名称的列,则查询失败并报错。

使用带有 FIRST 选项(或 TOP 选项)的 SKIP 选项

如果带有 SKIP offset 选项的 Projection 子句还包括 FIRST 、TOP 或 LIMIT,则结果集将以符

合条件的行集合中顺序位置为(offset + 1)的行开始,而不是以第一行开始。除非符合条件的行

少于(offset + max),否则位置(offset + max)上的行是结果集中的最后一行,。下列示例忽略

了表 tab1 的前 50 行,但返回最多 10 行的结果集,以第 51 行开始:

SELECT SKIP 50 FIRST 10 a, b FROM tab1;

下一示例在查询中使用 SKIP 和 FIRST 来将不多于 5 行从表 tab1 插入到表 tab2 内,以第 11

行开始:

INSERT INTO tab2 SELECT SKIP 10 FIRST 5 * FROM tab1;

也可以使用 TOP 关键字代替 FIRST 关键字,以下示例的效果等同于上一示例:

INSERT INTO tab2 SELECT SKIP 10 TOP 5 * FROM tab1;

下列集合子查询仅返回第 11 至第 15 之间的符合条件的行作为集合派生的表,通过列 a 中的值

排列这 5 行的顺序,并将此结果集存储在临时表中。

SELECT * FROM TABLE (MULTISET

(SELECT SKIP 10 FIRST 5 a FROM tab3

ORDER BY a)) INTO TEMP;

下列 INSERT 语句包含一个集合子查询,该集合子查询的结果将定义集合派生表。这些行按列 a

中的值排列顺序,并将插入到表 tab1 内。

INSERT INTO tab1 (a)

SELECT * FROM TABLE (MULTISET (SELECT SKIP 10 FIRST 5 a

FROM tab3 ORDER BY a));

将 FIRST 或 LIMIT 或 TOP 和 SKIP 选项与 ORDER 子句结合在一起的查询可对符合条件的行

强加唯一顺序,因此按 max 的值增大 offset 值的连续查询可将符合条件的行划分为 max 行的不

相连子集。这可支持需要固定页面大小的 web 应用程序,而无需游标管理。

仅当所有参与的数据库服务器都支持 SKIP 和 FIRST 选项(或 TOP 选项),您才可在分布式查

询中使用这些特性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值