复杂查询 - 按最新平均值排序2个其他值

时间:2016-02-13 23:55:20

标签: mysql

我正在尝试按日期和平均喜欢/不喜欢排序。

图片#1 :5个赞,2不喜欢,1周前创建

图片#2 :5赞,2不喜欢,一分钟前发布

示例:如果图片#1 有5个喜欢和2个不喜欢但是在1周前创建,那么这不会出现在第一行,因为图片#2 拥有相同数量的好恶,但比图片#1 更新。

这是我到目前为止所做的:

SELECT * FROM `pictures` GROUP BY id ORDER BY avg(likes/dislikes) desc LIMIT 10

期望的结果:

Row 1 --> Picture #2
Row 2 --> Picture #1

我非常感谢任何答案。

1 个答案:

答案 0 :(得分:2)

order by子句可以与多个列一起使用。

试试这个; ORDER BY avg(likes/dislikes) desc, created desc(假设created是您的日期列的名称)

它首先根据喜欢/不喜欢的平均值对结果集进行排序,然后按创建日期对具有相同平均值的行进行排序。

@update Sqlfiddle example

@ UPDATE2 可以在order by子句中使用case表达式,请参阅示例: Sqlfiddle example with case in order by