|
导读数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应... 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。 CONNECT BY 语法置信自己能够从网上找到许多例子,在这里就不多说了。来描绘一下我碰到的问题。 表(fnd_flex_value)中的数据是这样的: TYPE_ID PARENT_VALUE CHILD_VALUE 139048 2701 270101 139048 270101 27010101 139058 2701 270101 139058 270101 27010101 施行如下语句: select * from fnd_flex_value ffv where type_id=139048 start with child_value=270101 connect by prior child_value=ffv.parent_value; 施行后果为: TYPE_ID PARENT_VALUE CHILD_VALUE 139048 2701 270101 139048 270101 27010101 139048 270101 27010101 最初一条记载重复了两次,咱们想获得的后果应当只需前两条,那么第三条是怎么获得的呢,经由钻研,集体觉得能够是因为如下的缘由(假如不准确,请自己改正,呵呵): 在这段SQL的施行的时分,先施行了CONNECT BY,G最初才施行WHERE前提。 那么轮回获得的后果为: 第一次轮回(从start with child_value=2701)末尾找数据: (1.1) 139048 2701 270101 (1.2) 139058 2701 270101 第二次轮回(从(1.1)末尾找数据: (2.1) 139048 270101 27010101 (2.2) 139058 270101 27010101 第三轮回(从(1.2)末尾)找数据: (3.1) 139048 270101 27010101 (3.2) 139058 270101 27010101 退出轮回,最初施行where type_id=139048 获得三条记载。 假如想获得准确的后果,SQL语句应改为 select * from (select * from fnd_flex_value where type_id=139048)ffv start with child_value=270101 connect by prior child_value=ffv.parent_value; ===================================================================== connect by 是结构化查询顶用到的,其基本语法是: select ... from tablename where 前提3 start with 前提1 connect by 前提2; 例: select * from table start with org_id = 'HBHqfWGWPy' connect by prior org_id = parent_id; 简单说来是将一个树状结构存储在一张表里,好比一个表中具备两个字段: org_id,parent_id那么通过表现每一条记载的parent是谁,就能够构成一个树状结构。 用上述语法的查询能够取得这棵树的所有记载。 全新的路由器不仅让你更稳定快速地连接无线网络,更可以让家中的智能设备连接在一起。 |
温馨提示:喜欢本站的话,请收藏一下本站!