排序MySQL从另一个表数据中选择

排序MySQL从另一个表数据中选择,mysql,sorting,Mysql,Sorting,首先,我搜索了这个主题,发现了一些相同的主题线程,但我不知道如何将其应用到我的场景中:/ 我有两个表涉及这个查询 Table : Discussions Table : Comments -------------------- ------------------------------------- |id | content | | id | d_id | content | timestamp | -------

首先,我搜索了这个主题,发现了一些相同的主题线程,但我不知道如何将其应用到我的场景中:/

我有两个表涉及这个查询

Table : Discussions            Table : Comments
--------------------           -------------------------------------
|id | content      |           | id | d_id | content   | timestamp |
--------------------           -------------------------------------
| 1 | Text String  |           | 1  |  2   | Comment 1 | timestamp |
| 2 | Text String  |           | 2  |  3   | Comment 2 | timestamp |
| 3 | Text String  |           | 3  |  4   | Comment 3 | timestamp |
| 4 | Text String  |           | 4  |  2   | Comment 4 | timestamp |
| 5 | Text String  |           | 5  |  3   | Comment 5 | timestamp |
--------------------           -------------------------------------
现在我需要从讨论表中获取id&需要根据Unix时间戳在注释表中使用d_id对其进行排序

因此,带有近期评论的讨论将首先在网站上列出


希望你有这个想法。请告诉我如何为此编写SQL查询。

如果我很好地理解了您的问题,那么您需要将这两个表连接起来

select Comments.d_id, Discussions.content as d_content, Comments.content as c_content
from Comments
join Discussions
on Discussions.id = Comments.d_id
order by Discussions.id, Comments.timestamp
编辑:


一个简单的连接将多次获取每个讨论(取决于讨论的评论数量)。 此查询将最多返回一次每个讨论:

SELECT d_id FROM Comments GROUP BY d_id ORDER BY MIN(timestamp) DESC
当然,如果您想要更多的数据,而不仅仅是
Discussions.id
,那么您必须进行一些连接


还要注意,此查询不会返回没有任何注释的讨论ID。为此,您也必须加入。

您还应该向我们展示您的预期输出。看起来您应该将
Discussions.id=Comments.d_id
上的两个表合并在一起,但是现在还不清楚您要如何排序或排序什么。如果没有与最近发布的讨论相关联的注释,会发生什么情况?@ShyaminAyesh它将不在结果中。如果仍希望在结果中查看这些记录,则可能需要使用右联接。请如何使用右联接?我以前试过使用left join,但不起作用?你能发布左连接的查询吗?
SELECT d_id FROM Comments GROUP BY d_id ORDER BY MIN(timestamp) DESC