繁体   English   中英

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

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

长话短说,我在这个网站上将“父母”级别的评论存储在一个单独的表中,而不是将其回复存储在一个单独的表中,即“儿童”评论。

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

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

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

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

我的问题始于前两个查询-我只能从任一表中返回某个数字才能开始。 因此,如果某个话题消失了并且引起了很大的讨论,“儿童”注释的所有位置都被填充,并且您可能仍会看到“父母”注释长达数小时或数天,尽管它们与“最近的”注释并不遥远。

自从我做任何需要深入了解SQL的事情以来已经有一段时间了。 我知道有一种方法可以选择“父项”和“子项”注释,并且仅获取____个结果,尽管它们源自哪个表。

救命?

使用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

暂无
暂无

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

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