在查询里使用 ORDER BY 可以设置结果的排序方式。在数据库客户端执行一段查询,SELECT 所有的东西,来自 post 数据表。得到的就是一组内容数据。在这个结果里面最早创建的内容数据会排在前面。
下面要对这组内容数据排序,可以在查询里用一下 ORDER BY ,后面设置按哪个栏目的值排序,比如用一下 post.id 这个栏目,然后还要设置一下是要降序还是升序排列。DESC 表示降序排列。执行一下这段查询。
这次查询出来的结果,会按照内容的 id 降序排列,也就是按这个 id 值从大到小排列。如果在查询里把 DESC 换成 ASC,意思就是升序排列。执行一下。这次得到的结果会按照内容 id 升序排列,就是按这个 id 值从小到大排列。
下面再试一段查询,SELECT post.id 还有 post.title,再用一段子查询,给结果起个名字叫 totalComments 表示内容的评论总数,设置一下这个子查询,SELECT COUNT 一下 comment.id,用 WHERE 设置条件,条件是 comment 的 postId 等于 post 里的 id 。
设置一下主查询的数据来源,来自 post 数据表。执行一下。这段查询会给出一组内容列表,里面会包含内容项目相关的评论的总数。
现在我们可以试一下按这个评论总数作为排序的方式,ORDER BY,按 totalComments 栏目的值,ASC,升序排列。执行一下。
这次得到的这组内容列表会按照 totalComments 栏目的值,从小到大排列。再把这个 ASC 换成 DESC,表示降序排列。再执行一下。
这回得到的结果,会按照 totalComments 的值,从大到小排列。