MySQL自我JOIN表

时间:2015-01-29 12:34:35

标签: php mysql join self-join

在我的论坛上,我使用的数据库包含posts表:

enter image description here

  • type可以是问题,答案或说明(' Q',' A',' N')
  • updated是帖子上次更新的日期
  • postid是标识帖子的整数
  • parentid是一个整数,指的是父帖(NULL表示问题,是指答案问题,是指问题或答案的答案)

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

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

1 个答案:

答案 0 :(得分:1)

你可以这样做:

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

如果您要选择notetext或其他列,请将这些答案或备注添加到此子查询以及GROUP BY

相关问题