返回首页

gbase数据、南大通用产品文档:GBase8sSELECT 语句中的子查询

更新日期:2024年09月11日

子查询(内部 SELECT 语句,其中一个 SELECT 语句嵌套在另一个 SELECT 语句中)
可以返回多行或多个表达式,也可以不返回任何结果。每个子查询必须用括号分隔,并且
都必须包含一个 Projection 子句和一个 FROM 子句,子查询本身可以包含其它子查询。
数据库服务器支持下列上下文中的子查询:

嵌套在另一个 SELECT 语句的 Projection 子句中的 SELECT 语句

嵌套在另一个 SELECT 语句中的 WHERE 子句中的 SELECT 语句

嵌套在另一个 SELECT 语句的 FROM 子句中的 SELECT 语句
还可以在 INSERT 、DELETE 、MERGE 或 UPDATE 语句(子查询有效)的各种子句中
指定子查询。
Projection 子句或 WHERE 子句中的子查询可以是相关的或是不相关的。当子查询产生的
值取决于包含它的外部 SELECT 语句产生的值时,该子查询是相关的。有关更多信息,请
参阅相关子查询。
任何其它类型的子查询都被认为是不相关的。在 SELECT 语句的 FROM 子句中,只有不
相关的子查询才是有效的。

 摘要:
如果存在多个查询结果,gbase_next_result()将读取下一个查询结果,并
将状态返回给应用程序。
如果前面的查询返回了结果集,必须为其调用gbase_free_result()。
调用了gbase_next_result()后,连接状态就像你已为下一查询调用了
gbase_real_query()或gbase_query()时的一样。这意味着你能调用
gbase_store_result()、gbase_warning_count()、gbase_affected_rows()等
等。
如果gbase_next_result()返回错误,
将不执行任何其他语句,
也不会获取
任何更多的结果,
 语法:
int gbase_next_result(GBASE *gbase);
 参数:
 返回值:
0

成功并有多个结果。
-1
成功但没有多个结果。
>0
出错。


GBase 8a 程序员手册C API 篇


- 28 -

南大通用数据技术股份有限公司
 错误
CR_COMMANDS_OUT_OF_SYNC
以不恰当的顺序执行了命令。
CR_SERVER_GONE_ERROR

GBASE 服务器不可用。
CR_SERVER_LOST


在查询过程中,与服务器的连接丢失。
CR_UNKNOWN_ERROR


出现未知错误。

函数说明
如果以一个参数调用,它返回X 的自然对数。
这个函数同LN(X)具有相同意义。
示例
示例1:返回2 的自然对数。
gbase> SELECT LOG(2) FROM dual;
+-------------------+
| LOG(2)
|
+-------------------+
| 0.693147180559945 |
+-------------------+
1 row in set

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
755
示例2:返回-2 的自然对数。
gbase> SELECT LOG(-2) FROM dual;
+---------+
| LOG(-2) |
+---------+
|
NULL |
+---------+
1 row in set
示例3:如果以两个参数调用,这个函数返回以B 为底,X 的对数。
gbase> SELECT LOG(2,65536) FROM dual;
+--------------+
| LOG(2,65536) |
+--------------+
|
16 |
+--------------+
1 row in set
示例4:LOG(B,X)等同于LOG(X)/LOG(B)。
gbase> SELECT LOG(1,100) FROM dual;
+------------+
| LOG(1,100) |
+------------+
|
NULL |
+------------+
1 row in set