我在查询中遇到问题。
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)
最后一次尝试
答案 0 :(得分:1)
您必须首先放置字段maxe DESC
,然后在cm.votedown asc
子句中放置ORDER BY
第一个:
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
差异的记录。如果是tie,查询将返回具有最小 votedown
值的记录。