0

以下は、MySqlデータベースのテーブルをループし、一致するテーブルセル内のすべての車のレコードを示しています。MySqlクエリでORDERBYコマンドを使用して特定の列で並べ替えることができますが、特定のレコードを一番上に配置して、残りのすべての一致を一覧表示するにはどうすればよいですか?

たとえば、この前に、ユーザーが$ _POSTメソッドを使用してお気に入りの車( $_POST['user_car'])と必要な仕様( )を選択する簡単なフォームがあります。$_POST['user_spec']したがって、私のクエリでは、選択した仕様に一致するすべてのレコードが表示されますが、選択した車をリストの一番上に配置し、残りの車をフォローしたいと思います。

        $query_params = array( 
            ':spec' => $_POST['user_spec']
        );

        $query = " 
            SELECT 
                *
            FROM 
                table
            WHERE
                spec=:spec
        "; 

        try { 
            $stmt = DB::get()->prepare($query); 
            $stmt->execute($query_params); 
            $rows = $stmt->fetchAll(); 
        }  
        catch(PDOException $ex) {}

        foreach($rows as $row):

            $cell .= '<td>
                          <input type="checkbox" '.$check.' name="spec[]" value="'.$row['id'].'"/><span> '.$row['spec'].'
                      </td>';
        endforeach;
4

1 に答える 1

4

ORDER BYは、評価されたステートメントをそこに配置できる列だけに制限されません。

        SELECT 
            *
        FROM 
            table
        WHERE
            spec=:spec
        ORDER BY car_name=:user_car DESC, car_name ASC

ユーザーのお気に入りの車が「mini」の場合、car_nameが「mini」のレコードは1と評価され、残りは0と評価されるため、最初に表示されます。その後、残りの車は名前で注文されます。

于 2013-03-18T14:23:10.957 に答える