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

递归选择帮助

连厉刚
2023-03-14
问题内容

这是情况。我有两个表:

  • 用户(网站的注册用户),
  • 消息(彼此之间发送的个人消息)

消息表具有以下列(仅是重要的列):

  • ID,
  • 发件人(发送消息的用户的ID),
  • 发送消息的用户的接收者ID),
  • reply_to(此消息要回复到的消息的ID,可以为NULL)

我需要做的是构造一个SELECT查询,该查询将选择2个用户之间的完整对话。即,如果用户A回复了从用户B发送的消息,而用户B回复了该消息,我想得到如下三行:

  • message03:回复message02
  • message02:回复message01
  • 从用户A到用户B的message01

我确信可以基于reply_to字段构造这样的SELECT查询,但是我之前从未做过类似的事情,因此我需要一点帮助。

SELECT查询应针对MySQL数据库。


问题答案:

其实您是不对的:使用ANSI SQL,这 不可能的。某些具有供应商扩展名的数据库(例如Oracle的CONNECT BY)可能能够执行您想要的操作,但不能执行普通的旧SQL。

我的建议?更改您的数据,以便启用更简单的解决方案。

在这种情况下,请为每个消息指定一个session_id。如果用户发布新消息,请提供一个新值(当前未使用)。如果他们回复,请保留要回复的邮件的session_id。

然后,查询数据变得无关紧要。



 类似资料:
  • 问题内容: 我具有以下表结构: 因此,每个论坛帖子都有一个父母,也有一个父母(根帖子除外),等等。我需要的是获取一个论坛帖子所拥有的孩子总数,包括他的孩子的孩子,孙子的孩子等等。 现在,我有一个简单的选择返回直接子代: 我什至不确定这是否可以通过sql来实现,但是我是SQL的入门者,因此我认为也许有人可以提出一些想法。 任何帮助表示赞赏。谢谢。 问题答案: 这应该做到这一点: 您可以通过修改条件来

  • 问题内容: 我看到了这个答案,我希望他是不对的,就像有人不正确地告诉主键在一个列上,而我不能在多个列上设置它一样。 这是我的桌子 我想选择用户ID 2并递归,以便获得其所有直接子对象和间接子对象(即ID 4和5)。 如何以这种方式工作?我在postgresql和sqlserver中看到了递归。 问题答案: 看起来很麻烦,但是要使用它, (或您要在层次树中查找的任何密钥ID)。 前提是从您正在使用的

  • 问题内容: 我有一个问题,就是无法解决。我知道我想要的,只是无法在屏幕上显示出来。我有一张桌子,看起来像这样: ParentId具有FK到ID。 我要完成的工作是获取我传递的ID下方所有ID的完整列表。 例子: 这棵树看起来像这样: 如果我现在要求4,我将只得到4,但是如果我要求1,我将得到1、2、3和5。如果我要求2,我将得到2和3,依此类推。 有谁能指出我正确的方向。我的大脑炸了,所以我感谢我

  • 我一直在寻找一个递归选择排序,只使用2个参数: 必须排序的数组 一个值k,它指示要对哪个元素进行排序。 示例:a为{6,3,5,7,2}且k为2的SelectionSort(array[]a,int k)将对前3个元素进行排序,并保持最后的元素不变。 我想从一个if语句开始,k为0,如果是这样的话,它就会按原样返回数组,因为您不能对大小为1的数组进行排序。类似于: 我不知道如何做'else'部分,

  • 问题内容: 我有一个Person类,我想创建一棵树。这是Person类的解释器。 c1是左边的孩子,c2是右边的孩子。所以说我创建了三个这样的人: 因此,在这里您说亚当是根节点,亚当的左孩子是b,这是芭芭拉,他的右c是卡尔,依此类推。 所以我想做的是编写一个count方法,该方法计算包括在内的子代数。因此a.count()将返回6(如果Person f没有任何孩子)。 这是我的代码: 我在纸上运行

  • 我最近尝试使用JSoup来解析HTML文档,我在JSoup上做了一遍turrorious,发现select-Method可能就是我要找的。 我试图完成的是找到html文档中拥有某个类的所有元素。为了测试这一点,我在amazon的网页上尝试了这一点(想法:找到所有有特定优惠的交易)。 因此,我检查了web页面,看看正在使用哪些类和ID,然后尝试将其集成到一个小代码段中。在本例中,我找到了follwi