php - MySQL自连接表

标签 php mysql join self-join

在我的论坛上,我使用带有 posts 表的数据库:

enter image description here

  • 类型可以是问题、答案或注释(“Q”、“A”、“N”)
  • updated 是帖子上次更新的日期
  • postid 是标识帖子的整数
  • parentid 是一个整数,引用父帖子(NULL 表示问题,表示答案的问题,表示注释的问题或答案)<

如何创建一个表格,将每个问题的 postid 与与其关联的最新答案/注释的 postid 相关联?

我认为这需要三重 JOIN,但这对我来说是非常新的。

最佳答案

你可以这样做:

SELECT
  p.postid,
  answersAndNotes.postid AS AnswerOrNoteId,
  answersAndNotes.updatedDate AS AnswerOrNoteUpdateDate
FROM posts p
INNER JOIN
(
   SELECT 
     parentid,
     postid,
     MAX(updated) AS updatedDate
   FROM posts
   WHERE `type` = 'A' OR `type` = 'N'
   GROUP BY postid
) AS answersAndNotes ON answersAndNotes.parentid = p.postid
WHERE p.type = 'Q';

子查询:

  SELECT
     parentid,
     postid,
     MIN(updated) AS updatedDate
   FROM posts
   WHERE `type` = 'A' OR `type` = 'N'
   GROUP BY postid

将为您提供这些答案或注释,并且仅提供最新的答案或注释,如果您想要选择注释文本或其他列,则将它们添加到此子查询和GROUP BY中。

关于php - MySQL自连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28214907/

相关文章:

mysql - 从数据库中获取节点树以进行进一步渲染的最佳做法是什么?

php - 使用 php json 编码选择 mysql

php - 使用 setCircularReferenceHandler 时,使用 Normalizer 的序列化程序不返回任何内容

php - mysql php 变量嵌套

php-node Node Express 找不到模块

mysql - 使用 mySQL join 来选择喜欢的信息

mysql - 如何编译这个复杂的sql查询

python - 在 Pandas 中合并与在 R 中合并

java - 使用内部联接获取一个月的所有周数据

php - SQL连接两个group BY sum