当前位置: 代码迷 >> Sql Server >> 初学者mysql的一个有关问题!
  详细解决方案

初学者mysql的一个有关问题!

热度:54   发布时间:2016-04-24 09:47:05.0
菜鸟mysql的一个问题!!!
本帖最后由 u014288674 于 2014-10-23 16:48:04 编辑
BEGIN
declare des int;
       select tempSort into des from gamelist where gamesort=vgamesort;
if(des =1) then
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 desc;
else
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 asc;
end if;
    END




存储过程中 的sql语句   就只有降序跟升序的区别             能把这个写成一句sql语句吗?    



参数   in vgamesort  varchar(200),
           in vgameserver varchar(200),
           in vgoldtype   varchar(50)

------解决思路----------------------

 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

------解决思路----------------------
--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;
  相关解决方案