这个用SQL有点难哦顶下,等待高手!

解决方案 »

  1.   

    $txt = <<< TEXT
    2006-07-02 17:43:58     52      1       53
    2006-07-04 10:00:07     25      28      53
    2006-07-04 14:06:12     46      7       53
    2006-07-04 14:06:30     24      29      53
    2006-07-08 13:36:57     1       52      53
    2006-07-02 16:58:56     50      2       52
    2006-07-02 16:59:50     51      1       52
    2006-07-02 17:08:37     51      1       52
    2006-07-02 17:11:34     51      1       52
    2006-07-07 17:25:42     51      1       52
    2006-07-02 17:28:50     49      3       52
    2006-07-02 17:33:30     51      1       52
    2006-07-02 17:38:45     51      1       52
    2006-07-08 17:42:18     51      1       52
    2006-07-02 16:59:15     50      1       51
    2006-07-02 17:00:43     49      2       51
    2006-07-01 17:09:33     50      1       51
    2006-07-02 17:21:46     50      1       51
    2006-07-02 17:26:08     50      1       51
    2006-07-04 09:47:26     21      30      51
    2006-07-02 17:08:50     49      1       50
    2006-07-02 17:13:12     49      1       50
    2006-07-02 17:20:43     49      1       50
    2006-07-01 17:24:26     49      1       50
    TEXT;
    $ar = split("[\r\n]+", $txt);
    foreach($ar as $v) {
      $t = sscanf($v, "%s %s %d %d %d");
      $s1[] = $t[0]; //排序主键,请根据需要改变
      $s2[] = $t[4]; //排序副键,请根据需要改变
      $rs[] = $t;
    }
    /**
    以上读取数据到数组。数据存放在文件时,可用file函数读入到数组,也可用fgets函数逐行读取
    **/array_multisort($s1, $s2, SORT_DESC, $rs); // 排序/**
     提取符合条件的元素到结果数组
    **/
    $num = 0;
    $tag = '';
    foreach($rs as $v) {
      if($tag != $v[0]) {
        $tag = $v[0];
        $num = 0;
        $out[] = $v;
      }elseif($num < 3) {
        $out[] = $v;
      }
      $num++;
    }print_r($out);
      

  2.   

    explode it to array,then sort the array,finally compare and get the date