首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asc和desc的命令没有给出正确的结果

asc和desc的命令没有给出正确的结果
EN

Stack Overflow用户
提问于 2016-06-12 08:49:48
回答 1查看 39关注 0票数 1

在查询中获得结果有问题。

代码语言:javascript
复制
id ,voteup , votedown

1  , 12     ,  7
2  ,  6     , 1 
3  ,  4     , 9 
4  ,  0     , 6 

我的疑问是

代码语言:javascript
复制
 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

我得到了这个结果

代码语言:javascript
复制
  id, voteup , votedown
   1, 12     ,  7

我想先选择有voteup - votedown >= 5的最大结果,如果两个结果有相同的结果,我想要排序一个有较少的投票

我希望有这样的结果

代码语言:javascript
复制
 id , voteup , votedown
  2 ,  6     , 1         

谢谢。

这是方形小提琴演示

我试过这样改变列的顺序。

代码语言:javascript
复制
  ORDER BY cm.votedown asc ,cm.voteup DESC limit 1

但这也给了我错误的结果,如果我有这样的价值。

代码语言:javascript
复制
   id ,voteup , votedown

   1  , 6     ,  0
   2  , 9     , 2 
   3  ,  4     , 9 
   4  ,  0     , 6 

这给

代码语言:javascript
复制
 1,  6 , 0

但我想

代码语言:javascript
复制
2 , 9 , 2    > which is max (9-2)

最后一次尝试的小提琴

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-12 08:53:42

您必须先放置字段maxe DESC,然后在ORDER BY子句中将cm.votedown asc放在第一位:

代码语言:javascript
复制
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值的记录。

这里的演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37772363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档