我的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/>';
}
我的结果是这样的:
alireza - &gt;&gt; 21个
mohammad - &gt;&gt; 23个
ehsan - &gt;&gt; 28个
alizade - &gt;&gt; 32个
fardin - &gt;&gt; 22个
aliahmad - &gt;&gt;&gt; 35
但我希望首先显示结果,其中“ali”在其名称中,然后显示年龄大于20的结果,如下所示:
alireza - &gt;&gt; 21个
aliahmad - &gt;&gt; 35
alizade - &gt;&gt; 32个
mohammad - &gt;&gt; 23个
ehsan - &gt;&gt; 28个
fardin - &gt;&gt; 22个
除了我,因为我不会说英语。我的语言是波斯语。
答案 0 :(得分:2)
您可以为ORDER BY
子句添加条件。
在您的情况下,您需要以下内容:
ORDER BY
CASE
WHEN name LIKE %ali% THEN 0
ELSE 1
END,
age
答案 1 :(得分:1)
您可以添加优先级,然后按此新列进行排序
SELECT name, age, IF(name LIKE '%ali%', 1, 0) as priority FROM persons
WHERE age > 20 OR name LIKE %ali% ORDER BY priority DESC
答案 2 :(得分:-3)
使用以下
$query = $db->query("SELECT * FROM persons WHERE age > 20 OR name LIKE %ali%" order by age);