现在数据库中有一列0,9,6
0,13,7类似这种形式的数据  类型是字符串现在希望他排序后返回排序的规则是这样的 根据逗号来间隔 越前面的数字小 越排在前面比如上面的 先是0与0相比 相等 则 将9与13比  13大  所以这条记录排在后面
0,9,6
0,13,7若是这种
0,9,6,13
0,9,3
第一个0相等 第二个9相等 第三个 6大 则排成
0,9,3
0,9,6,13
mysql里怎样才能按这种方式排序后查出数据!

解决方案 »

  1.   

    SELECT * FROM (
     SELECT NAME,GROUP_CONCAT(RIGHT(CONCAT('00000',NZ),5) ORDER BY id SEPARATOR '' ) AS NA FROM (
    SELECT A1.name,b.`id`,SUBSTRING_INDEX(SUBSTRING_INDEX(a1.NAME,',',b.id),',',-1) AS NZ FROM `pre_test` a1 LEFT JOIN lsb1 b ON 
     (LENGTH(a1.NAME)-LENGTH(REPLACE(a1.NAME,',','')))+1>=b.id ORDER BY A1.ID,B.ID) f
     GROUP BY NAME) f ORDER BY na,NAME生成LSB1,字段ID,内容 1-100000
    NAME字段内容为0,13,7
    0,9,6,13
      

  2.   


    生成LSB1,字段ID,内容 1-100000这个1-100000  是什么意思?
      

  3.   


    还是不太明白。。你的这条sql是有两个表吗?
      

  4.   

    没有仔细看我的代码吗
    SELECT * FROM (
      SELECT NAME,GROUP_CONCAT(RIGHT(CONCAT('00000',NZ),5) ORDER BY id SEPARATOR '' ) AS NA FROM (
    SELECT A1.name,b.`id`,SUBSTRING_INDEX(SUBSTRING_INDEX(a1.NAME,',',b.id),',',-1) AS NZ  FROM `pre_test` a1 LEFT JOIN lsb1 b ON  
      (LENGTH(a1.NAME)-LENGTH(REPLACE(a1.NAME,',','')))+1>=b.id ORDER BY A1.ID,B.ID) f
      GROUP BY NAME) f ORDER BY na,NAME生成LSB1,字段ID,内容 1-100000
    NAME字段内容为0,13,7
    0,9,6,13有1辅助表LSB1