MySQL 可以在没有客户端处理的情况下检索链表数据吗?

Susan Sarandon
发布: 2024-11-04 08:38:30
原创
836 人浏览过

Can MySQL Retrieve Linked List Data Without Client-Side Processing?

从 MySQL 数据库检索链接列表数据

问题:

给定一个结构如下的 MySQL 数据库表:

table
    id INT NOT NULL PRIMARY KEY
    data ..
    next_id INT NULL
登录后复制

是否可以使用数据库查询来检索链表顺序中的数据,而不需要求助于客户端处理?

答案:

不幸的是,MySQL 不支持递归查询,而递归查询是有效检索链表数据所必需的。这个问题类似于在关系数据库中表示树结构。

替代方法:

有关存储和检索树状结构的替代方法,请参阅以下问题来自关系数据库系统的数据:

  • “将平面表解析为树的最有效/优雅的方法是什么?”
  • “是否可以制作递归 SQL query ?"

有限深度查询:

如果您希望限制查询结果的深度,您可以采用以下方法,尽管使用性能较差:

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);
登录后复制

每个链表都会以一行的形式返回结果,但查询性能会很慢。

以上是MySQL 可以在没有客户端处理的情况下检索链表数据吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板