![](/img/trans.png)
[英]sql query selecting from two tables - return results from one table if there are none in the other table
[英]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.