例如:select * from table where id in ('783',' 769',' 814',' 1577',' 1769')
order by find_in_set( id, '783, 769, 814, 1577, 1769' )
查出来是769
1577
814
1769
783
SQLmysqlfind_in_set排序field

解决方案 »

  1.   

    ID什么类型
    贴建表及插入记录的SQL
      

  2.   

    select *,find_in_set( id, '783, 769, 814, 1577, 1769' ) from table where id in ('783',' 769',' 814',' 1577',' 1769')
    这样就可以看到为什么了
      

  3.   

    CREATE TABLE `goods` (
      `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
      `brand_id` smallint(5) unsigned NOT NULL DEFAULT '0',
      `name` text NOT NULL,
      `click_count` int(10) unsigned NOT NULL DEFAULT '0',
      `number` smallint(5) unsigned NOT NULL DEFAULT '0',
      `salesnum` int(10) NOT NULL DEFAULT '0',
      `desc` text NOT NULL,
      PRIMARY KEY (`id`),
     
    ) ENGINE=InnoDB AUTO_INCREMENT=6082 DEFAULT CHARSET=utf8;
    INSERT INTO `goods` VALUES ('901', '26', 'T恤---售馨', '939', '1', '', '')
      

  4.   


    INSERT INTO `goods` VALUES ('901', '26', 'T恤---售馨', '939', '1', '', '')
    INSERT INTO `goods` VALUES ('783', '26', '雪纺上衣', '639', '5', '', '')
    INSERT INTO `goods` VALUES ('814', '26', '雪纺上衣', '1059', '19', '', '')
    INSERT INTO `goods` VALUES ('1577', '26', '短袖荷叶领', '647', '87', '', '')
    INSERT INTO `goods` VALUES ('1769', '26', '透气纯色纽扣上衣', '2451', '24', '', '')
    INSERT INTO `goods` VALUES ('1642', '26', ' 纯色短袖', '534', '64', '', '')
      

  5.   

    select * from table where id in ('783',' 769',' 814',' 1577',' 1769')
    order by find_in_set( id, '783,769,814,1577,1769')
    find_in_set中的字符串空格去掉
      

  6.   


    去掉还是升序的 ·· 不按where in的顺序 
      

  7.   

    SELECT * FROM `goods1` WHERE id IN ('783','769','814','1577','1769') ORDER BY FIND_IN_SET(id, '783,769,814,1577,1769' )
    去掉空格
      

  8.   

    mysql> SET NAMES GBK;
    Query OK, 0 rows affected (0.00 sec)mysql> SELECT * FROM `goods1` WHERE id IN ('783','769','814','1577','1769')
        ->
        ->  ORDER BY FIND_IN_SET(id, '783,769,814,1577,1769' ) ;
    +------+----------+------------------+-------------+--------+----------+------+
    | id   | brand_id | name             | click_count | number | salesnum | desc |
    +------+----------+------------------+-------------+--------+----------+------+
    |  783 |       26 | 雪纺上衣                |         639 |      5 |        0 |
         |
    |  814 |       26 | 雪纺上衣                |        1059 |     19 |        0 |
         |
    | 1577 |       26 | 短袖荷叶领                |         647 |     87 |        0
    |      |
    | 1769 |       26 | 透气纯色纽扣上衣              |        2451 |     24 |
      0 |      |
    +------+----------+------------------+-------------+--------+----------+------+
    4 rows in set (0.01 sec)mysql>
      

  9.   


    去掉还是升序的 ·· 不按where in的顺序 
    你到底是要按什么顺序,这样写本来就是按783,769,814,1577,1769这个顺序的
      

  10.   


    哦 ok了  ok了 抱歉我是在 @rucypli的例子上试的 ,原来find_in_set要这么用才行···· 谢谢大家 谢谢谢谢 
      

  11.   


    去掉还是升序的 ·· 不按where in的顺序 
    你到底是要按什么顺序,这样写本来就是按783,769,814,1577,1769这个顺序的恩恩  现在ok了 很感谢大家···