mysql - 前一行 id 在 MySQL 中连续显示在父列的下两行中
问题描述
我的桌子是:
SELECT id, name FROM category
表数据显示
id | name
---| ----
1 | John
2 | Jimy
3 | James
4 | Phil
5 | Sayed
6 | Doe
7 | Warkes
8 | Ryan
9 | Tim
10 | Joe
我想要这样
id | name | parent_id
---| ------ | ------
1 | John | 0
2 | Jimy | 1
3 | James | 1
4 | Phil | 2
5 | Sayed | 2
6 | Doe | 3
7 | Warkes | 3
8 | Ryan | 4
9 | Tim | 4
10 | Joe | 5
我想首先parent_id
总是0
在第一行并first row id
显示在2nd
和3rd
行列中parent_id
。
Second row id
在列中显示4th
和5th
行parent_id
。它将连续进行。
如果类别表 id 从 4 开始,那么它将显示如下
id | name | parent_id
---- | ------- | --------
4 | Phil | 0
5 | Sayed | 4
6 | Doe | 4
7 | Warkes | 5
8 | Ryan | 5
9 | Tim | 6
我只有category table
没有其他parent table
的。
解决方案
如果您的 ID 始终以 1 递增且没有间隙,您可以parent_id
使用 FLOOR 函数模拟该值:
SELECT id, name, FLOOR(id / 2) as parent_id FROM category;
但是一个更简洁和更强大的选项是parent_id
与条目一起保存(或在单独的相关表中),以便您的查询将选择附加列,例如:
SELECT id, name, parent_id FROM category2;
或者
SELECT c.id, c.name, p.parent_id FROM category c JOIN parents p ON p.id = c.id;
有关工作示例,请参阅http://sqlfiddle.com/#!9/c74821/1 。
推荐阅读
- javascript - 读取 Google 表格中的数据并将数据传递到自定义下拉菜单
- jquery - 使用 jQuery ruby gem 设置输入掩码
- python - str 类型没有定义 __round__ 方法/如何获取表单字段?django 和cropper.js?
- excel - 为什么我不能重置“最后一个单元格”
- python - 声明一个特定类型的全局变量
- python - 并行处理大量小任务
- java - 如何通过反映条目列表中的更改来解决编辑条目和新条目的问题
- class - 这个类被标记为“@immutable”,但它的一个或多个实例字段不是最终的:
- r - 如何保持具有特定值的行
- feathersjs - FeathersJS 中的实时/反应式聚合