在 MySQL 数据库中获取链表
链表的数据库存储带来了独特的挑战。与 Oracle 或 Microsoft SQL Server 等其他 RDBMS 解决方案不同,MySQL 不支持直接获取链表数据所需的递归查询。
这个问题的解决方案类似于在 RDBMS 中存储树结构,围绕提取从数据库中获取链表并在客户端进行处理。然而,这提出了一个问题:是否可以在一定深度或基于行条件终止查询。
虽然 MySQL 缺乏内置的递归查询功能,但存在一个有点麻烦的解决方法:
<code class="sql">SELECT * FROM mytable t1 LEFT JOIN mytable t2 ON (t1.next_id = t2.id) LEFT JOIN mytable t3 ON (t2.next_id = t3.id) LEFT JOIN mytable t4 ON (t3.next_id = t4.id) LEFT JOIN mytable t5 ON (t4.next_id = t5.id) LEFT JOIN mytable t6 ON (t5.next_id = t6.id) LEFT JOIN mytable t7 ON (t6.next_id = t7.id) LEFT JOIN mytable t8 ON (t7.next_id = t8.id) LEFT JOIN mytable t9 ON (t8.next_id = t9.id) LEFT JOIN mytable t10 ON (t9.next_id = t10.id);</code>
此查询的局限性在于其性能较慢并且在单行上返回所有结果。然而,它提供了一种以深度有限增量获取链表数据的方法。
以上是如何在不使用递归查询的情况下获取 MySQL 中的链表?的详细内容。更多信息请关注PHP中文网其他相关文章!