我有3张桌子:
+----+------------------------------+
| id | value |
+----+------------------------------+
| 1| aa\zzxx\vvyy|
+----+------------------------------+
| 2| bb\bbll\mmnn\oopp|
+----+------------------------------+
我需要使用什么SELECT语句,以便输出看起来像这样(table3最多可以达到4级):
{{1}}
由于我对DB和SQL没有太多经验,这对我来说很难。我对如何做到这一点没有任何看法。
这必须在MySQL中完成。我读过的最难的事情是MySQL中的递归查询,因为它不存在,所以人们必须模拟它。我已经阅读了有关递归查询的一些SO主题,但我明白这不适合我。
感谢任何帮助。
答案 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,仅查询数据。因此,这种方法在其他不同用途上可能会很慢。如果你使用它,我建议你考虑索引一些字段。