本帖最后由 u014288674 于 2014-10-23 16:48:04 编辑

解决方案 »

  1.   


     select  p.id as id,p.goldNum,p.giveGold,p.goldPrice,d.numdisplay
     from  goldprice p
     left join goldtemplate d
     on   p.gamesort=d.gamesort and p.goldnum = d.goldnum and  p.goldtype = d.goldtype
     where p.gamesort=vgamesort and p.servername=vgameserver and p.goldtype=vgoldtype
     order by  case when des =1 then  p.goldNum desc else  p.goldNum  asc
      

  2.   

    --mysql 不熟,演示一下思路,你自己改成正确的语法。
    declare des int;
    DECLARE sortSign int;
           select tempSort into des from gamelist where gamesort=vgamesort;
    if(des =1) then
        SET sortSign = -1;
    else
        SET sortSign = 1;
    end if;
        select  p.id as id,p.goldNum,p.giveGold,p.goldPrice,d.numdisplay
        from  goldprice p
        left join goldtemplate d
         on   p.gamesort=d.gamesort and p.goldnum = d.goldnum and  p.goldtype = d.goldtype
        where p.gamesort=vgamesort and p.servername=vgameserver and p.goldtype=vgoldtype
        order by p.goldNum * sortSign asc;
      

  3.   

    -------------------------------------------------2L 大神  我是新手   为什么我运行会报一个这样的错误----------------you have an error in you sql syntax;check the manual that corresponds to your mysql server version for the right syntax to user near 'desc else p.goldNum asc' at line6
      

  4.   

    3L  大神  我看不懂你给我的思路 ! 看上去就是存储过程,  我要改成sql语句!
      

  5.   

    很简单的思路啊:
    根据 des 决定 sortSign 取 1 或 -1;
    排序按 p.goldNum * sortSign 来,等于 sortSign 取 1 时是升序、取 -1 时是降序。举例:
    假如 goldNum 分别为 {1,3,2};
    sortSign 取 1 时排序依据还是 {1,3,2},实际输出次序为 {1,2,3},升序;
    sortSign 取 -1 时排序依据是 {-1,-3,-2},被排序成 {-3,-2,-1},实际输出是原 goldNum 次序为 {3,2,1},降序。
      

  6.   

    额,  楼上大神  能否帮我写出完整的  SQL 语句不?  因为我上面的存储过程  好像跟你的思路没什么不同啊!   
      

  7.   

    你是2个SELECT语句,按要求变成了1个。怎么会“没什么不同”。能写的 #2 不是给你了,自己把它调通。
    我 mysql 不熟。