我知道这个问题在这里被问了几次,但是浏览这些线程并没有给我带来任何帮助。我使用ORDER BY "column Name"
按字母顺序对搜索结果进行排序。但是,我希望有一个搜索结果始终位于顶部。
例如,我将按名称列对它们进行排序,但我总是希望Zaboomafoo
是第一个结果。我将如何做到这一点?这是我的PHP:
$sql = "SELECT * FROM `" . $db_table . "` WHERE (UPPER(city) LIKE UPPER('%$searchq%') OR UPPER(postal) LIKE UPPER('%$searchq%')) AND disable = 1 ORDER BY name";
while($row1 = mysqli_fetch_array($query))
{
$name = $row1['name'];
$business =$row1['business'];
$description = $row1['description'];
$email = $row1['email'];
$phone = $row1['phone'];
$image = $row1['image'];
}
然后我把这些信息输入到一个名为 output
的变量中,并将其回显到屏幕上。
尝试这样的事情:
SELECT *
FROM table_name
WHERE (UPPER(city) LIKE UPPER('%$searchq%')
OR UPPER(postal) LIKE UPPER('%$searchq%'))
AND disable = 1
ORDER BY IF(name = 'Zaboomafoo', 0, 1), name
如果你只希望一个特定的名字总是在上面,你可以这样做
SELECT ... ORDER BY name = 'Zaboomafoo' DESC, name;
如果要固定多行,最好添加一个单独的priority
列并执行
SELECT ... ORDER BY priority DESC, name;
只是为了多样化:
SELECT name
...
, priority = CASE name
WHEN 'Zaboomafoo' THEN 999
WHEN 'Barzaboma' THEN 111
END
FROM some_table
ORDER BY priority DESC
, name