SQL - 如何查询两个表并将 return 结果作为一个表?

SQL - how to query two tables and return the results as one?

长话短说,我有这个网站,其中 "Parent" 级评论与他们的回复存储在单独的 table 中,称为 "Child" 评论。

为了生成所有最近评论的列表,我一直在做这样的事情:

SELECT
TOP 10 
 PC.ParentCommentText,
 PC.ParentCommentID,
 PC.ParentCommentTimeStamp
FROM
  ParentComments AS PC

我们称其为 Query1。

Query2 相同:

SELECT
TOP 10 
 CC.ChildCommentText,
 CC.ChildCommentID,
 CC.ChildCommentTimeStamp
FROM
  ChildComments AS CC

然后我使用 Union 并查询查询,这样我就可以一次遍历所有结果并显示最新的混合列表。

SELECT * FROM Query1
UNION 
SELECT * FROM Query2
ORDER BY ParentCommentTimeStamp DESC

我的问题从前两个查询开始 - 我只能 return 从 table 中的某个数字开始。因此,如果某个线程跑掉并成为一个大讨论,"Child" 评论的所有槽都被填满了,你可能仍然会看到 "Parent" 几小时或几天前的评论,尽管它们不在最近的任何地方.

我已经有一段时间没有做任何需要深入了解 SQL 的事情了。我知道有一种方法可以 select 父子评论合二为一,然后只抓取 __ 个结果,尽管 table 它们来自这些结果。

帮忙?

使用union all合并查询结果,稍后order by获取前n行。

SELECT TOP 10 WITH TIES *
FROM (SELECT ParentCommentText,ParentCommentID,ParentCommentTimeStamp as comment_timestamp
      FROM ParentComments 
      UNION ALL
      SELECT ChildCommentText,ChildCommentID,ChildCommentTimeStamp
      FROM ChildComments
     ) T
ORDER BY comment_timestamp DESC