首页 / MYSQL / 获取MySQL数据库中的链表
获取MySQL数据库中的链表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了获取MySQL数据库中的链表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1459字,纯文字阅读大概需要3分钟。
内容图文
![获取MySQL数据库中的链表](/upload/InfoBanner/zyjiaocheng/890/01d96d6c3a5641ac835becb9866a586c.jpg)
我有一个具有这种结构的MySQL数据库表:
table
id INT NOT NULL PRIMARY KEY
data ..
next_id INT NULL
我需要按链表顺序获取数据.例如,给定这些数据:
id | next_id
----+---------
1 | 2
2 | 4
3 | 9
4 | 3
9 | NULL
我需要按顺序获取id = 1,2,4,3,9的行.如何使用数据库查询执行此操作? (我可以在客户端完成.我很好奇是否可以在数据库端完成.因此,说这是不可能的(没有足够的证明)).
有一个终止点也是很好的(例如,在10次提取后停止,或者当行上的某些条件变为真时),但这不是必需的(可以在客户端完成).我(希望我)不需要检查循环引用.
解决方法:
某些品牌的数据库(例如Oracle,Microsoft SQL Server)支持额外的SQL语法来运行“递归查询”,但MySQL不支持任何此类解决方案.
您描述的问题与表示SQL数据库中的树结构相同.你只有一棵长而瘦的树.
有几种解决方案用于从RDBMS存储和获取这种数据结构.请参阅以下一些问题:
>“What is the most efficient/elegant way to parse a flat table into a tree?”
>“Is it possible to make a recursive 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数据库中的链表全部内容,希望文章能够帮你解决获取MySQL数据库中的链表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。