从 MySQL 数据库中的链表获取数据
在具有包含链表结构的表的 MySQL 数据库中,例如提供:
table id INT NOT NULL PRIMARY KEY data .. next_id INT NULL
挑战在于以与链表相同的顺序检索数据。不幸的是,MySQL 不直接支持递归查询,而递归查询是检索链表结构所必需的。
但是,有一些方法可以解决此限制。一种方法是使用 JOIN 查询手动遍历链表,如给定响应所示:
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);
此查询有效地执行链表的广度优先遍历,按以下顺序返回所有行它们在列表中的位置。
或者,按照注释中的建议,您可以将链表数据存储在 NoSQL 数据库中,这通常为处理非关系数据结构提供更好的支持。
以上是如何从MySQL中的链表结构中获取数据?的详细内容。更多信息请关注PHP中文网其他相关文章!