如何在 SQL 中选择有关联的记录?
Posted
技术标签:
【中文标题】如何在 SQL 中选择有关联的记录?【英文标题】:How to choose records with ties in SQL? 【发布时间】:2021-01-08 22:19:36 【问题描述】:我正在尝试从数据库中选择具有最高点赞数或 cmets 的帖子。如果出现平局,我想包括所有选项。我尝试在 mysql WORKBENCH 中使用 TOP 1 WITH TIES,但它没有提供任何价值。 我还能尝试什么? 问题是这样的 - 列出点赞数最多的帖子 ID。在平局的情况下显示所有此类帖子。
谢谢。
【问题讨论】:
提供样本数据和预期结果。 请添加几行样本数据和预期的结果。我们很难想象所有的细节。 您使用的是 SQL-Server(来自 Microsoft)还是使用 MySQL(来自 Oracle)?您不太可能同时使用两者。 (编辑您的问题并更正标签。) 你说你已经尝试了一些 SQL。请编辑您的问题并添加您尝试过的 sql,然后添加一些示例输入、您实际得到的输出以及您想要的输出。 【参考方案1】:信息很薄,但听起来你应该使用rank function,rank 允许平局,你可以过滤 rank 函数的结果。
【讨论】:
问题是这样的 列出帖子ID、内容和点赞数最多的帖子数量。在平局的情况下显示所有此类帖子。我可以使用 sql 制作一个表格,显示帖子 ID、内容和点赞数。但是如果出现平局,我如何选择所有帖子? 你写了一个简单的选择查询,包括链接文章中的排名,之后最简单的可能是将该查询变成子查询,并选择所有排名= 1的行【参考方案2】:RANK() 返回具有相同排名的关系(例如,两个*** cmets 都将具有 '1')作为输出。但如果我正确理解了您的具体用例,使用SELECT * FROM (SELECT col, MAX(col) AS top_comment FROM your_table) WHERE col = top_comment
可能会更简单。这将返回列中最高值的所有可能平局。
【讨论】:
所以这段代码正在计算最大喜欢,我需要返回最喜欢的帖子的值。在 tie 的情况下,我需要返回所有获得最大赞数的帖子。你能告诉我我应该在这里改变什么吗?我尝试按照您所说的进行操作,但仍然无法正确实施。 SELECT Post, Content, COUNT(*) AS NUM_OF_LIKES FROM post INNER JOIN likepost ON Id = Post GROUP BY Post ORDER BY NUM_OF_LIKES desc;以上是关于如何在 SQL 中选择有关联的记录?的主要内容,如果未能解决你的问题,请参考以下文章