我正在尝试按日期和平均喜欢/不喜欢排序。
图片#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
我非常感谢任何答案。
答案 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