我的mysql查询是:

$query = $db->query("SELECT * FROM persons WHERE age > 20 OR name LIKE %ali%");


我在以下php源代码中使用了此查询:

while($result = $db->fetch_array($query))
{
    echo 'name:' . $result['name'] . ' -->> age: '. $result['age'] . '<br/>';
}


我的结果是这样的:

阿列雷扎->> 21
穆罕默德->> 23
ehsan->> 28
阿丽扎德->> 32
法丁->> 22
aliahmad->> 35

但我要首先显示名称中带有“ ali”的结果,然后显示年龄大于20岁的结果,如下所示:

阿列雷扎->> 21
aliahmad->> 35
阿丽扎德->> 32
穆罕默德->> 23
ehsan->> 28
法丁->> 22

对不起,因为我不会说英语好。我的语言是波斯语。

最佳答案

您可以将条件添加到ORDER BY子句。

在您的情况下,您将需要以下内容:

ORDER BY
  CASE
    WHEN name LIKE %ali% THEN 0
    ELSE 1
  END,
  age

08-06 23:46