|
導讀數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應... 數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合。 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是誰,就能夠構成一個樹狀結構。 用上述語法的查詢能夠取得這棵樹的所有記載。 全新的路由器不僅讓你更穩定快速地連接無線網絡,更可以讓家中的智能設備連接在一起。 |
溫馨提示:喜歡本站的話,請收藏一下本站!