我有一个表格,包括:项目,排名分数和用户投票数。为简单起见:id,rank,votes。
我试图运行一个查询,将最高排名得分的项目排序到最低,除非投票数= 0.
因为我对新商品有基本排名分数,所以无法订购我的排名。
我已经尝试了以下内容以及其他一些排列:
$list = $dbh->query('SELECT * FROM ranks ORDER BY votes desc, rating desc case when min(votes)= 0 else rating desc');
看完之后无济于事:
Conditional sorting in MySQL和
Conditional sorting in MySQL?
我试过了:
SELECT * FROM ranks ORDER BY rating desc, case votes when 0 then votes end
这是表,我得到的输出:
ID : Rating : Votes
2 : 201 : 9
3 : 100 : 0
4 : 100 : 0
5 : 100 : 0
1 : -13 : 9
我理想的输出是:
ID : Rating : Votes
2 : 201 : 9
1 : -13 : 9
4 : 100 : 0
5 : 100 : 0
3 : 100 : 0
正如您所看到的,这并没有将所有0个投票项目分组到最后。
我确信这是前额简单,我真的很感激任何指针和最佳做法。干杯!
答案 0 :(得分:5)
这一组全部0结束。
SELECT * FROM `ranks` ORDER BY (Votes=0), Rating DESC
答案 1 :(得分:1)
QUERY
SELECT *
FROM ranks
ORDER BY case votes
WHEN 0 THEN 0
ELSE 1 END DESC, rating DESC
ORDER BY部分说的是:
答案 2 :(得分:1)