MySQL获取数据+递归查询

时间:2015-07-30 08:20:17

标签: mysql sql recursion

我有3张桌子:

+----+------------------------------+
| id |                        value |
+----+------------------------------+
|   1|                  aa\zzxx\vvyy|
+----+------------------------------+
|   2|             bb\bbll\mmnn\oopp|
+----+------------------------------+

我需要使用什么SELECT语句,以便输出看起来像这样(table3最多可以达到4级):

{{1}}

由于我对DB和SQL没有太多经验,这对我来说很难。我对如何做到这一点没有任何看法。

这必须在MySQL中完成。我读过的最难的事情是MySQL中的递归查询,因为它不存在,所以人们必须模拟它。我已经阅读了有关递归查询的一些SO主题,但我明白这不适合我。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

通过艰苦而快速的学习,我设法解决了我的问题。代码如下。

SELECT DISTINCT
    OTHER.DATA,
    concat(
        '/',ifnull(t4.value,''), CASE WHEN (t4.value is NULL) then '' else '/' END,  
        ifnull(t3.value,''), CASE WHEN (t3.value is NULL) then '' else '/' END,  
        ifnull(t2.value,''), CASE WHEN (t2.value is NULL) then '' else '/' END, 
        ifnull(t1.value,''), CASE WHEN (t1.value is NULL) then '' else '/' END, 
        table2.value
    ) as 'My Column name'

FROM
    table1

LEFT JOIN table2 ON 
    (table1.A_id = table2.A_id)

LEFT JOIN table3 as t1 ON
    (t1.B_id = table2.B_id)

LEFT JOIN table3 AS t2 ON 
    (t2.B_id = t1.B_id_) 

LEFT JOIN table3 AS t3 ON 
    (t3.B_id = t2.B_id_)

LEFT JOIN table3 AS t4 ON 
    (t4.B_id = t3.B_id_)

非常感谢@Damodaran和他的递归查询解决方案。 How to create a MySQL hierarchical recursive query

请谨慎使用此代码,因为我已将其用于DB,仅查询数据。因此,这种方法在其他不同用途上可能会很慢。如果你使用它,我建议你考虑索引一些字段。