如何按两列排序MySQL


How to sort MySQL by two columns?

我和几个朋友做了一个音乐博客,我做了一个MySQL表来记录帖子的浏览量。我有一个列来跟踪管理视图和一个列来跟踪每个帖子的用户视图。

我正在制作一个页面,可以轻松查看和排序大多数管理员视图,大多数用户视图和总视图。我没有在MySQL数据库中为"总视图"创建一列(为了计算,我只是将管理视图添加到用户视图中。简单明了)。

我可以很容易地通过查询SELECT * FROM log ORDER BY ADMIN DESC和用户视图相同的管理视图排序,但是有一个简单的方法来做像SELECT * FROM log ORDER BY ADMIN + USER DESC的事情吗?如果没有,我将不得不修改我的代码来提供我自己的排序算法。

提前感谢。

查询完全如您所示:

SELECT  *
FROM    log
ORDER BY
        admin + user DESC

如果您为总视图创建了一个单独的列并对其进行了索引,则可以在查询中使用它:

SELECT  *
FROM    log
ORDER BY
        total_views DESC
LIMIT   10

,这将提高有限查询的SELECT速度。这样做的话,整个表应该被扫描和排序,即使您只选择前10个评论。

如果您打算使用总视图进行排序以外的任何操作,我建议:

SELECT *,(`admin`+`user`) as `total` FROM `log` ORDER BY `total` DESC

这将在你的结果中添加一个"total"字段,你可以在计算中显示或使用。