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
长话短说,我有这个网站,其中 "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