繁体   English   中英

MySQL self-JOIN表

[英]MySQL self-JOIN table

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

在此处输入图片说明

  • type可以是问题,答案或注释(“ 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM