对 PHP 的 CodeIgniter 使用 Datamapper 1.8.1-dev,我正在尝试构建此查询以优先考虑列表顶部的一个国家/地区名称:
SELECT * FROM countries
ORDER BY CASE name WHEN 'Australia' THEN 1 ELSE 2 END, name
我的 Country 模型上的 PHP(扩展了 Datamapper):
$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`
我假设 CASE 案例没有被处理,因为这个流控制语句只是在 MySQL 5 中添加的?order_by
在数据库检索后向表中添加列countries
或使用 PHP 排序函数是我唯一的选择吗?