当前位置: 首页 > 面试题库 >

MySQL中的分层查询

南门棋
2023-03-14
问题内容

我试图找到一个特定领域的所有深度的父母,祖父母等。例如,给定以下结构,如果我提供5,则返回的值应为1、2、3和4。

| a  | b  |
-----------
| 1  | 2  |
| 2  | 3  |
| 3  | 4  |
| 4  | 5  |
| 3  | 6  |
| 4  | 7  |

我该怎么做?


问题答案:
SELECT  @id :=
        (
        SELECT  senderid
        FROM    mytable
        WHERE   receiverid = @id
        ) AS person
FROM    (
        SELECT  @id := 5
        ) vars
STRAIGHT_JOIN
        mytable
WHERE   @id IS NOT NULL


 类似资料:
  • 问题内容: 我在Oracle11g中有一个具有(id,parent_id)结构的表。 我想对其进行查询,以获取与这些ID各自分层链接的所有行,因此结果应为: 我一直在和上苦苦挣扎,现在,我所能得到的只是查询所需结果的一小部分: 我不想使用任何循环来获取完整的结果。 任何的想法 ? 最好的问候,J茅r么我Lefr猫re PS:在第一个答案之后编辑,注意到我忘记了一些我想要的结果… 问题答案: 您发布

  • 问题内容: 我有一个与父子关系的表,我需要递归查询的帮助 表结构 我正在尝试进行递归查询,但是我无法做到这一点,建议我应该如何查询数据库 问题答案: 正如上面所指出的,这并不是真正的递归,但是如果您知道最大需要深入多少步,则可以沿以下方向使用某些方法(也许使用PHP生成查询): 我首先将父ID设置为NULL而不是0,但这是个人喜好。 ^^在这种情况下,您需要走多远。 [ 下一点没有严格意义 ] 然

  • 问题内容: 我希望我能够解释困扰我的问题。我有以下分层数据集(这只是34K记录的子集) 这是树的代表 我需要的是清单的所有记录,带有exam = N和潜在的extest =’J’记录,可以嵌套。 给我 但是我需要的是 当我遇到EXAM =’N’记录时,需要停止运行。 我需要类似“停止于”子句的内容。 如何才能做到这一点? 问题答案: 罗伯特 您可以通过在connect by子句中添加“ exam

  • 问题内容: 我有一个MySQL表,如下所示: 现在,我想有一个简单的MySQL查询,只需向其提供ID [例如说id=19],然后就应该获取其所有子ID [即结果应具有ID ‘20,21,22’]…。 孩子的等级未知;它可能会有所不同.... 我知道如何使用for循环…但是如何使用单个MySQL查询实现相同的目标? 问题答案: 对于MySQL 8+:使用递归with语法。 对于MySQL 5.x:使

  • 我有一个MySQL表,如下所示: 现在,我想有一个MySQL查询,我只需向它提供id(例如),然后我应该获得它的所有子id(即,结果应该有id'20、21、22']... 不知道孩子的等级;它可以变化.... 我知道如何使用循环来实现...但是如何使用单个MySQL查询实现相同的功能呢?

  • 主要内容:GROUP BY单独使用,GROUP BY 与 GROUP_CONCAT() ,GROUP BY 与聚合函数,GROUP BY 与 WITH ROLLUP在 MySQL 中, GROUP BY 关键字可以根据一个或多个字段对查询结果进行分组。 使用 GROUP BY 关键字的语法格式如下: GROUP BY  <字段名> 其中,“字段名”表示需要分组的字段名称,多个字段时用逗号隔开。 GROUP BY单独使用 单独使用 GROUP BY 关键字时,查询结果会只显示每个分组的第一条记录。