****sql***and id in (156,296,272,48,261,239,46,120,199,93) ;
****sql***and id in (156,296,272,48,261,239,46,120,199,93) order by case id
when 156 then 1
when 296 then 2
when 272 then 3
when 48 then 4
when 261 then 5
when 239 then 6
when 46 then 7
when 120 then 8
when 199 then 9
when 93 then 10 end
第二个sql语句是由下面Java代码拼出来的:
//字符串id 就是156,296,272,48,261,239,46,120,199,93
String ids = LuceneQueryDao.findNewsByLuceneSql(ql,startNum,endNum);
String idarr[] = ids.split(",");
StringBuffer sql = new StringBuffer();
sql.append("and n.id in (");
sql.append(ids);
sql.append(") order by case id ");
for(int i=0;i<idarr.length;i++){
sql.append(" when ");
sql.append(idarr[i]);
sql.append(" then ");
sql.append(i+1);
}
sql.append(" end");
System.out.println("****sql***"+sql.toString());
网上看到有不少方法,说的不是很清楚。希望专业人士看到后给出建议!
另外我同学说写个方法给结果排序,不知道是代码快呢还是sql语句快呢?