可能重复:
mysql自定义排序
我有一组 ID:
$ids = array(5, 1, 4, 2, 3);
我提出一个查询:
SELECT * FROM Persons
WHERE id IN $ids
我收到这个对象:
1、2、3、4、5
是否可以像在数组中一样排序?我想收到
5、1、4、2、3。
我也使用PROPEL。也许在 Symfony 中使用 Propel ORM,这可能吗?
在 mysql 中,您可以使用字段函数进行自定义排序顺序。例如:
$ids = array(5, 1, 4, 2, 3);
$ids = implode(',', $ids);
$sql = "SELECT * FROM Persons
WHERE id IN ($ids)
ORDER BY FIELD(id, $ids)";
运行查询后,您可以在 PHP 中对其进行排序。
像这样的东西(仅限 PHP 5.3+):
$ids = array(5, 1, 4, 2, 3);
// Run Query...
// assume $results is the result array
usort($results, function($a, $b) use($ids){
$a = array_search($a['id'], $ids);
$b = array_search($b['id'], $ids);
return $a -$b;
});