#sql 指令动态生成order by 排序的时候 求正确写法

#sql("newuserCsjiaochengList")
	SELECT c.`name`,a.cover,a.`owner`,a.title,a.state,a.createtime,a.id,d.istuijianlist,d.istuijian,a.bcount,a.dznum,a.plnum,a.scnum,
d.headportrait ,d.nickname,d.id as uid from t_course a
left join t_interest c on a.classid=c.id
left join t_user d on d.id=a.userid
#for(x : cond)
      #if(x.value!="order")
        #(for.index == 0 ? "where": "and") #(x.key) #para(x.value)
      #else
        #para(x.value)
      #end  
      

#end
 
#end
Kv cond=new Kv(); //Kv.by("c.id=", getParaToInt("classtype"));
			if(getParaToInt("classtype")!=0)
				cond.set("c.id=", getParaToInt("classtype"));
			if(getParaToInt("state")!=0)
				cond.set("a.state=", getParaToInt("state"));
			if(getParaToInt("tuijian")==1)
				cond.set("d.istuijianlist=", 1);
			else if(getParaToInt("tuijian")==2)
				cond.set("a.istuijian=", 1);
			if(getParaToInt("owner")!=0)
				cond.set("a.`owner`=", getParaToInt("owner")-1);
			
			
//			switch (getParaToInt("order")) {
//			//最新发布
//			case 0:
//				cond.set("order", " order by a.createtime desc");
//				
//				break;
//				//最多浏览
//			case 1:
//				cond.set("order", " order by a.bcount desc");
//				
//				break;
//				//最多点赞
//			case 2:
//				cond.set("order", " order by a.dznum desc");
//				
//				break;
//				//最多收藏
//			case 3:
//				cond.set("order", "order by a.scnum desc");
//				
//				break;
//				//最多评论
//			case 4:
//				cond.set("order", " order by a.plnum asc");
//				
//				break;
//				
//
//
//			
//			}
			if(type==1)
			{
				sqlpara=Db.getSqlPara("common.newuserCsjiaochengList", Kv.by("cond", cond));
				
			}


评论区

JFinal

2018-03-30 15:41

我记得 order by 是不支持问号占位的,像下面这样来写才可以:
order by x asc, y desc

而不能: order by ? asc

而你的代码中 order by 部分使用了 #para 指令,显然是生成了问号占位,造成无论如何都是错误的

qin

2018-03-30 18:03

@JFinal 我其实就是不知道通过那种方式能把order by a.plnum asc 最近到sql("newuserCsjiaochengList")后面,比如指令区域该怎么写,然后怎么通过值传递过去,麻烦波总,详细指点一下

JFinal

2018-03-30 18:39

@qin 参数传进来,用输出指令 #() 输出即可:
order by #(aaa) asc, #(bb) desc

多看看 jfinal enjoy 引擎文档,自然就会使用了