3

可能重复:
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,这可能吗?

4

2 回答 2

5

在 mysql 中,您可以使用字段函数进行自定义排序顺序。例如:

$ids = array(5, 1, 4, 2, 3);
$ids = implode(',', $ids);
$sql = "SELECT * FROM Persons
        WHERE id IN ($ids)
        ORDER BY FIELD(id, $ids)";
于 2012-06-27T18:28:14.487 回答
2

运行查询后,您可以在 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;
});
于 2012-06-27T18:24:30.247 回答