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;
-------------------------------------------------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
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
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;
根据 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},降序。
我 mysql 不熟。