gpt4 book ai didi

sql - 递归 SELECT 帮助

转载 作者:可可西里 更新时间:2023-11-01 07:46:09 26 4
gpt4 key购买 nike

情况是这样的。我有两个表:

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

消息表有这些列(只是重要的列):

  • 身份证,
  • 发件人(发送邮件的用户的 id消息),
  • 收件人的用户ID消息已发送),
  • reply_to(此消息发往的消息的 id回复,可以为NULL)

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

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

我确信可以根据 reply_to 字段构建这样的 SELECT 查询,但我以前从未做过类似的事情,所以我需要一些帮助。

SELECT 查询应该针对 MySQL 数据库。

最佳答案

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

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

在这种情况下,给每条消息一个 conversation_id。如果用户发布了一条新消息,请为其提供一个新的(当前未使用的)值。如果他们回复,请保留被回复消息的 conversation_id。

然后查询数据变得微不足道。

关于sql - 递归 SELECT 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1947117/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com