【发布时间】:2016-02-22 21:55:52
【问题描述】:
如何编写一个循环执行以下任务的查询: (代入个别结果的id)
SELECT * From Table where id= 24
Id | next_to_check | next_to_check_2
24| 34,23 | 4
然后我们检查我们显示的意思是 34,23,4
SELECT * From tablle where id = 34
SELECT * From tablle where id = 23
SELECT * From tablle where id = 4
然后用结果替换结果 34,23,4 然后结果越来越深
24-> 34,23,4
34-> which results in a
23-> which results in a
4-> is as a result of
什么结果 -> 结果与结果等等......
当我手动执行时,它看起来像这样:
【问题讨论】:
-
你能发布更多细节吗?了解表的确切结构、数据示例和所需结果的示例会很有用
-
您的桌子似乎设计得很糟糕。您在
next_to_check中有一个复合数据元素,显然next_to_check和next_to_check2是存储相同值的不同列。如果您将其建模为标准的父子层次表,这将更有意义(并使查询更容易编写)。 -
他们在我看来你有两个问题:1 你需要将多个值分成单独的行。其次,您需要遍历层次结构。您可以使用table(cast(multiset( 将 , 拆分为多行,然后使用recursive CTE 或
connect by prior遍历层次结构