Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按优先级排序MySQL搜索结果_Php_Mysql_Sorting - Fatal编程技术网

Php 按优先级排序MySQL搜索结果

Php 按优先级排序MySQL搜索结果,php,mysql,sorting,Php,Mysql,Sorting,我知道这个问题在这里已经被问过好几次了,但是浏览这些线索并没有给我任何帮助。我使用按“列名”的顺序对搜索结果按字母顺序排序。但是,我希望有一个搜索结果总是在顶部 例如,我将按名称列对它们进行排序,但我始终希望Zaboomafoo是第一个结果。我该怎么做呢?以下是我的PHP: $sql = "SELECT * FROM `" . $db_table . "` WHERE (UPPER(city) LIKE UPPER('%$searchq%') OR UPPER(postal) LIKE UPPE

我知道这个问题在这里已经被问过好几次了,但是浏览这些线索并没有给我任何帮助。我使用
按“列名”的顺序对搜索结果按字母顺序排序
。但是,我希望有一个搜索结果总是在顶部

例如,我将按名称列对它们进行排序,但我始终希望
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

谢谢你的帮助。稍后我可能会将其用于另一个部分。