2017-02-20 66 views
0

为什么我没有得到我想要的查询顺序?SQL查询给我错误的订单

SELECT 
     e_name, 
     a_shortcut, 
     GROUP_CONCAT(case 
      when t_rank = 1 then a_shortcut 
      when t_rank = 2 then a_shortcut 
      when t_rank = 3 then a_shortcut 
      end separator ',') as group_con 
     FROM team 
     INNER JOIN event 
     ON team.EID = event.eid 
     WHERE e_type = 'nonsport' 
     GROUP BY event.eid ORDER BY t_rank 

这个查询给我一个随机的顺序,当我输入t_rank的时候。它不是给我一个1,2,3的命令,而是随时给我随机的。有人可以帮我吗?

这是给我

{"nresults":[{"e_name":"Musical Festival - Song Composition","First":"2nd", 
"Second":"1st", 
"Third":"3rd"}]} 

结果这里是我的预期输出

{"nresults":[{"e_name":"Musical Festival - Song Composition","First":"1st", 
"Second":"2nd", 
"Third":"3rd"}]} 

enter image description here

+0

我如何修复了这个先生里面分离器之前结束后,移动的顺序?我解析它在JSON – orange

+0

我不遵循先生 – orange

+2

如果你的意思是group_concat没有排序,那么你应该使用group_concat与order by子句?示例数据会很好。 –

回答

0

好吧,我知道了现在的工作。感谢大家。

select 
       e_name, 
       a_shortcut, 
       GROUP_CONCAT(case 
       when t_rank = 1 then a_shortcut 
       when t_rank = 2 then a_shortcut 
       when t_rank = 3 then a_shortcut 
       end order by t_rank separator ',') as group_con 
      from 
       team inner join event on team.EID = event.eid Where e_type = 'nonsport' 
group by event.eid 

我只是子句GROUP_CONCAT