select *
from table 
where id in(10,32,22,76,13,44)
order by instr(',10,32,22,76,13,44,', ','+id+',') order by  后面跟的是一个查询的字符串的位置的一个数字 从0到16
但是 order by  后面跟的应该是列名啊
是不是问题出在 id in(10,32,22,76,13,44) 这上面但是怎么理思路也理不对
谁能给我一步一步地理理 思路阿!!
谢谢

解决方案 »

  1.   

    1、筛选ID在10,32,22,76,13,44中的记录;
    2、皖ID在10,32,22,76,13,44的位置排序, 比如10为1,76为4 升序
      

  2.   

    order by 后面也可以是数字,对应字段的顺序你到底是想要干什么?
      

  3.   

    order by instr(',10,32,22,76,13,44,', ','+id+',') 按照 10,32,22,76,13,44 的自定义顺序排序啊,好象是我首创的[align=center]====  ====
    [/align]
      

  4.   

    楼上的  10为 0 76 应该是 10
    但是字段就三个啊 
    id,sore,year
    那第10个应该是哪列啊 呵呵
    我是看这个帖子 才发的问题http://topic.csdn.net/u/20080324/18/2b8e7dd8-d8c5-4016-948b-e07db50d4227.html
      

  5.   

    如果在mysql里面使用select instr(',10,32,22,76,13,44,', ','76',') 
    确实是显示10啊  哥们
    你可以试一下不太懂 别嫌烦 呵呵
      

  6.   

    instr() 函数取出 字符串在 目标字符串中的位置order by instr(',10,32,22,76,13,44,', ','+id+',')    id = 76 instr(',10,32,22,76,13,44,', ',76,')
    ',76,'  在第10列上[align=center]====  ====
    [/align]
      

  7.   

    order by  后面 接 数字表示什么啊 楼上的大哥
      

  8.   

    楼上的高手
    如果order by  10
    怎么解释这句话呢
    我那个表就三个字段阿
      

  9.   

    估计你把这个和 order by 1;这种格式混了order by 1; 这种数字格式,mySQL 会parse为按第一列来排序.而order by function(), 则会按function的返回值来排序[align=center]====  ====
    [/align]
      

  10.   

    order by instr(',10,32,22,76,13,44,', ','+id+',')    
    10:2
    32:4
    22:7
    76:10
    13:13
    44:16ID为2,则排序为第2位
    32则第4位 22则第7位,这样排序
      

  11.   

    貌似可以这样理解: ',10,'、 ',32,'、这些都看做一个整体,instr()返回第一次出现位置
    所以
    ,10,:1
    ,32,:4
    ,22,:7
    ,76,:10
    ,13,:13
    ,44,:16
    不知道对不对^_^ 
      

  12.   

    jason_kou 
    完全正确。[align=center]====  ====
    [/align]