如何从符合特定条件的表中递归选择行

时间:2019-01-29 01:37:28

标签: mysql

我们有一个Mysql表user_documents。该表将文档与用户映射。

表的数据定义

  1. id-表的主键
  2. document_id-文档表的外键
  3. user_id-用户表的外键。
  4. hierarchy_order-层次结构的顺序。

样本表数据

| id | document_id | user_id | hierarchy_order |
| 1  | 1           | 1       | 1               |
| 2  | 1           | 2       | 2               |
| 3  | 1           | 3       | 3               |
| 4  | 1           | 4       | 4               |
| 5  | 2           | 1       | 1               |
| 6  | 2           | 3       | 2               |
| 7  | 2           | 2       | 3               |
| 8  | 2           | 4       | 4               |
| 9  | 3           | 2       | 1               |
| 10 | 3           | 1       | 2               |
| 11 | 3           | 3       | 3               |
| 12 | 3           | 4       | 4               |
| 13 | 4           | 1       | 1               |
| 14 | 4           | 3       | 2               |
| 15 | 4           | 4       | 3               |
| 16 | 4           | 2       | 4               |

我们有一个层次结构表,以简单的层次结构列出了用户。该表经常更改,并且用户顺序也会更改。

我们不能依靠层次结构表,因为它经常更改。因此,我们使用user_id记录了document_id以及该用户的层次结构顺序。

对于user_documents表中的document_id = 1,层次结构为

  • 级别1(最高级别)-user_id-1
  • 第2级-user_id-2
  • 级别3-user_id-3
  • 第4级-user_id-4

问题陈述

我们要选择user_id 2和其他用户的所有记录/行,这些用户的层次结构顺序对于所有document_id都大于或等于user_id 2hierarchy_order。

预期产量

| id | document_id | user_id | hierarchy_order |
| 2  | 1           | 2       | 2               |
| 3  | 1           | 3       | 3               |
| 4  | 1           | 4       | 4               |


| 7  | 2           | 2       | 3               |
| 8  | 2           | 4       | 4               |

| 9  | 3           | 2       | 1               |
| 10 | 3           | 1       | 2               |
| 11 | 3           | 3       | 3               |
| 12 | 3           | 4       | 4               |


| 16 | 4           | 2       | 4               |

我们正在使用MySQL数据库,不确定如何实现。

0 个答案:

没有答案