1

我和几个朋友创建了一个音乐博客,并创建了一个 MySQL 表来跟踪帖子浏览量。我有一栏跟踪管理员视图,一栏跟踪每个帖子的用户视图。

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

我可以通过查询轻松地按管理视图排序,SELECT * FROM log ORDER BY ADMIN DESC对于用户视图也是如此,但是有没有一种简单的方法来做类似的事情SELECT * FROM log ORDER BY ADMIN + USER DESC?如果没有,我将不得不弄乱我的代码来提供我自己的排序算法。

提前谢谢。

4

2 回答 2

5

查询与您所说的完全相同:

SELECT  *
FROM    log
ORDER BY
        admin + user DESC

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

SELECT  *
FROM    log
ORDER BY
        total_views DESC
LIMIT   10

这将提高SELECT有限查询的速度。按照您的操作方式,应该扫描并排序整个表格,即使您只选择前 10 条评论。

于 2013-01-15T20:31:12.087 回答
1

如果您打算将总视图用于除排序之外的任何内容,我建议:

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

这将为您的结果添加一个“总计”字段,您可以在计算中显示或使用该字段。

于 2013-01-15T20:41:02.097 回答