是一个根据条件搜索用户的SQL语句,关键一条是最后的排序规则是在线用户排在最前面,所有在线用户由一个函数获得,返回的是所有在线用户的ID,类型是数组。SQL语句是写在程序里的,只能一条select完成,不能用unions。select * from users表 where 条件 order by 在线用户在前面(在线用户已知,是int型数组)不知道有什么好的解决方法,谢了!!!

解决方案 »

  1.   

    select * from users表 where 条件 
    order by case when  在线用户在前面 then 0 else 1 end
      

  2.   

    sql没有数组.你的INT数组是什么意思?
      

  3.   

    select * from users表 where 条件 
    order by CASE WHEN FLAG='在线' THEN 1 ELSE 2 END
      

  4.   

    users表没有FLAG='在线'这个标识,所有在线用户由一个函数获得,返回值是int(c#)型数组,我的SQL语句由C#拼字符串形成,最后由存储过程执行exec(@SQL) 。@SQL为C#最终拼凑的字符串。
      

  5.   

    找到答案了,原来用 order by charindex可以解决
      

  6.   

    SQL语句写在程序里,条件的值也是由程序生成,那么如何拼接这个SQL语句就是你程序的问题了。楼主问题描述的不是很清楚啊。