PHP の CodeIgniter に Datamapper 1.8.1-dev を使用して、このクエリを作成して、リストの一番上にある 1 つの国名に優先順位を付けようとしています。
SELECT * FROM countries
ORDER BY CASE name WHEN 'Australia' THEN 1 ELSE 2 END, name
私の国のモデル(Datamapperを拡張する)のPHP:
$countries = new Country();
$countries->order_by("CASE name WHEN 'Australia' THEN 1 ELSE 2 END, name");
$countries->get_iterated();
代わりに、Datamapper は "CASE" をテーブル名として解析し、次の構文エラー クエリを作成します。
SELECT * FROM (`countries`)
ORDER BY `CASE` name WHEN 'Australia' THEN 1 ELSE 2 END, `countries`.`name`
このフロー制御ステートメントは MySQL 5 に追加されたばかりなので、CASE ケースは処理されていないと思いますか? order_by
テーブルに列を追加するか、countries
データベースの取得後に PHP の並べ替え関数を使用する唯一の方法はありますか?