SELECT * FROM num WHERE (num IN ('222'))
union all
SELECT * FROM num WHERE (num IN ('333'))
union all
SELECT * FROM num WHERE (num IN ('111'))

解决方案 »

  1.   

    SELECT * FROM num WHERE (num IN ('222', '333', '111'))
    order by charindex(num,'222', '333', '111')
      

  2.   

    to  zjcxc(: 邹建 :)执行不了,提示:charindex 函数要求有 2 到 3 个参数。
      

  3.   

    to  leeboyan(宝宝) 您的回复可以解决该问题,但如果实际使用时会使语句非常非常非常的长。
    而且看起来语句效率也很低。(个人见解)
    谢谢
      

  4.   

    --搞错,这样
    SELECT * FROM num WHERE (num IN ('222', '333', '111'))
    order by charindex(num,'222,333,111')
      

  5.   

    SELECT * FROM num WHERE num IN ('222', '111', '333')
    order by charindex(num,'222,333,111')
      

  6.   

    :(
    还是不行,运行成功,但得不到想要的结果。(结果还是按111,222,333排序)会不会是类型问题?SELECT * FROM num WHERE (num IN ('222', '333', '111')) ---条件是字符型
    order by charindex(num,'222,333,111')--条件是否会转为数值型?
      

  7.   

    --测试
    declare @t table(num varchar(10))
    insert @t select '111'
    union all select '222'
    union all select '333'
    union all select '444'
    union all select '000'--查询
    SELECT * FROM @t 
    WHERE num IN ('222', '333', '111')
    order by charindex(num,'222,333,111')SELECT * FROM @t 
    WHERE num IN ('222', '444', '111')
    order by charindex(num,'222,444,111')/*--测试结果
    num        
    ---------- 
    222
    333
    111(所影响的行数为 3 行)---------- 
    222
    444
    111(所影响的行数为 3 行)
    --*/
      

  8.   

    谢谢回复。执行您的查询非常正常,也得到正确的结果。但在库里建个实际的表(id,num),就得不到正确的结果。(还是按id排序) :(有点晕。