where products_id in (667,663,691,719,683,675,671,679,687,739)
返回的是记录的物理顺序,并不做排序处理

解决方案 »

  1.   

    order by products_id desc
      

  2.   

    我想用order by楼主一定是知道的,只是不用order by,为什么会这样
      

  3.   

    数据库在安装的时候,应该有一种默认的排序方式,可以选择,如果不选择,多半都是默认按照纪录的物理顺序返回了;不用Order by,就不会做其他方式的排序了。
      

  4.   

    我是楼主,感谢各位的帮忙。既然默认的方法不行,那我就想人工自己排序,我想通过这种方法来实现:
    一个数组,定义它的排序方式:(pid表示products_id, sid表示排序的值)
    $sort = array (
               0 => array('pid' => 667, 'sid' => 1),
               1 => array('pid' => 663, 'sid' => 2),
               2 => array('pid' => 691, 'sid' => 3),
               3 => array('pid' => 719, 'sid' => 4))另一个数组就返回从数据库里查询返回的产品信息:
    $products = array(
              0 => array('pid' => 667, 'products_name' => 0708),
              1 => array('pid' => 691, 'products_name' => 0732),
              2 => array('pid' => 719, 'products_name' => 0760),
              3 => array('pid' => 663, 'products_name' => 0704))然后写一个函数,让$products中的内容以'pid'为关键字,按$sort中的内容来排序。
    想法是有了,但我还没实现它,不知道大家有什么办法来实现?
      

  5.   

    我这个是没有固定的徘序字段的,要另外计算出来,就象上面列出的products_id in (12,14,13,15,11,436,437,268)这样,因此order by group by恐怕很难实现。
      

  6.   

    <?php
    $sort = array (
               0 => array('pid' => 667, 'sid' => 1),
               1 => array('pid' => 663, 'sid' => 2),
               2 => array('pid' => 691, 'sid' => 3),
               3 => array('pid' => 719, 'sid' => 4));$products = array(
              0 => array('pid' => 667, 'products_name' => '0708'),
              1 => array('pid' => 691, 'products_name' => '0732'),
              2 => array('pid' => 719, 'products_name' => '0760'),
              3 => array('pid' => 663, 'products_name' => '0704'));// 工作函数用于对$sort数组按sid排序
    function _sort($a,$b) {
      if($a['sid'] == $b['sid']) return 0;
      return $a['sid'] > $b['sid'] ? 1: -1;
    }usort($sort, '_sort'); //对$sort排序,你可任意设定sid列的值
    //print_r($sort);$tmp = array(); //工作数组,用于缓存对$products排序的结果//工作函数,用于在$products中查找指定元素
    function _find($ar, $v) {
      foreach($ar as $a)
        if($a['pid'] == $v) return $a;
      return "";
    }foreach($sort as $v)
      $tmp[] = _find($products, $v['pid']);$products = $tmp;
    print_r($products);?>