问题:
给定一个结构如下的 MySQL 数据库表:
table id INT NOT NULL PRIMARY KEY data .. next_id INT NULL
是否可以使用数据库查询来检索链表顺序中的数据,而不需要求助于客户端处理?
答案:
不幸的是,MySQL 不支持递归查询,而递归查询是有效检索链表数据所必需的。这个问题类似于在关系数据库中表示树结构。
替代方法:
有关存储和检索树状结构的替代方法,请参阅以下问题来自关系数据库系统的数据:
有限深度查询:
如果您希望限制查询结果的深度,您可以采用以下方法,尽管使用性能较差:
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中文网其他相关文章!