2014-11-26 4 views
1

Я знаю, что этот вопрос задавали несколько раз здесь, но просмотр этих тем не помог мне. Я сортирую результаты поиска по алфавиту с помощью ORDER BY "column Name". Но я хочу, чтобы один результат поиска всегда был сверху.Сортировка результата поиска MySQL с помощью Priority

Итак, я отсортирую их по столбцу имен, но я всегда хочу, чтобы первый результат был получен 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']; 
     } 

А потом я Ouput этой информации в переменный под названием output, и эхо его на экран.

ответ

1

попробовать что-то вроде этого:

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 
+0

Это сделало трюк, спасибо большое – CaptainQuint

0

Если вы хотите только один конкретное имя, чтобы всегда быть на вершине вы можете сделать

SELECT ... ORDER BY name = 'Zaboomafoo' DESC, name; 

Если вы хотите прикрепить несколько строк вы, вероятно, лучше с добавлением отдельной колонки priority и до

SELECT ... ORDER BY priority DESC, name; 
+0

Благодарим за помощь. Я могу использовать это позже для другой части. – CaptainQuint

0

Только для разнообразия ake:

SELECT name 
    ... 
    , priority = CASE name 
      WHEN 'Zaboomafoo' THEN 999 
      WHEN 'Barzaboma' THEN 111 
     END 
FROM some_table 
ORDER BY priority DESC 
    , name 
Смежные вопросы