在查询中获得结果有问题。
id ,voteup , votedown
1 , 12 , 7
2 , 6 , 1
3 , 4 , 9
4 , 0 , 6 我的疑问是
SELECT cm.id ,cm.voteup,cm.votedown FROM Table1 cm
INNER JOIN ( select id ,MAX(voteup - votedown ) as maxe
from Table1 where voteup - votedown >= 5 group by id ) tt
on cm.id = tt.id
ORDER BY cm.voteup DESC,cm.votedown asc,cm.id limit 1我得到了这个结果
id, voteup , votedown
1, 12 , 7我想先选择有voteup - votedown >= 5的最大结果,如果两个结果有相同的结果,我想要排序一个有较少的投票
我希望有这样的结果
id , voteup , votedown
2 , 6 , 1 谢谢。
这是方形小提琴演示
我试过这样改变列的顺序。
ORDER BY cm.votedown asc ,cm.voteup DESC limit 1但这也给了我错误的结果,如果我有这样的价值。
id ,voteup , votedown
1 , 6 , 0
2 , 9 , 2
3 , 4 , 9
4 , 0 , 6 这给
1, 6 , 0但我想
2 , 9 , 2 > which is max (9-2)最后一次尝试的小提琴
发布于 2016-06-12 08:53:42
您必须先放置字段maxe DESC,然后在ORDER BY子句中将cm.votedown asc放在第一位:
SELECT cm.id ,cm.voteup,cm.votedown FROM Table1 cm
INNER JOIN (
select id, MAX(voteup - votedown ) as maxe
from Table1
where voteup - votedown >= 5
group by id
) tt on cm.id = tt.id
ORDER BY maxe DESC, cm.votedown asc, cm.voteup DESC, cm.id limit 1此查询将选择具有最大voteup - votedown差异的记录。对于领带,查询返回具有最小votedown值的记录。
这里的演示
https://stackoverflow.com/questions/37772363
复制相似问题