mysql - 嵌套列表的MySQL浮动ID?
问题描述
我的数据库如下所示:
- ID
- 电子邮件
- 信息
我可以使用如下查询列出行:
SELECT * FROM my_table
但是,我想将它们嵌套列出,如下所示:
my_name
my_message
another_name
another_message
new_name
new_message
some_name
some_message
使用正常的 id 如下所示:
1
3
4
2
SQL 不知道嵌套。我可以使用一个parent_id
很常见的。但是,正确处理分页等是非常棘手的。
我的一个想法是float
在 ids 上使用。然后它看起来像下面这样:
1
1.1
1.2
2
2.1
2.2
SQL 将使订单正确无误,并且分页也很容易。
浮动方法有什么陷阱吗?我从未见过有人使用它。
解决方案
DECIMAL
顺便说一句,正如上面 Akina 的评论中提到的那样,使用将是一种没有舍入异常风险的方法。
陷阱是你只能用这样的比例数字模拟两个级别。如果你想要像 1.1.3 这样的第三级怎么办?你觉得这和 1.13 有什么不同,1.1 岁以下的第 13 个直系孩子?
parent_id
如果您想以规范化的方式支持层次结构,而不将自己限制在两个级别,则最好使用该解决方案。
您还可以使用各种其他解决方案来模拟层次结构。关于在字符串中使用节点路径的注释是一种选择:1/1/3
. 还有其他解决方案。您可能会喜欢我对将平面表解析为树的最有效/优雅的方法是什么的回答?
推荐阅读
- cordova - 如何在 Cordova 应用程序中的每个导航上删除白屏
- java - HashMap 将消耗多少大小?
- elastic-stack - 如果使用 curl 将 ELK 安装在 docker 容器中,则删除旧的 Elasticsearch 索引
- python - Python 日志记录字符串不是格式化程序
- ios - 未调用 PreferredStatusBarStyle
- android - 从 Activity 到 Fragment 的后退
- javascript - Typescript中的角度时间比较
- mysql - 使用 .bat 文件更新 MySQL 数据
- android - 我们可以在 Firebase 机器人测试中编辑 maxDepth。如果是,如何?
- gradle - 使用 build.gradle 执行特定的 testng 组