Поместите сначала самый популярный вариант в поле выбора с MySQL

0

Я новичок в mysql, но у меня есть база данных с некоторыми данными, упорядоченная по имени:

<option value="4"> George </option>
<option value="55"> John </option>
<option value="13"> Paul  </option>
<option value="24"> Ringo </option>

Я хочу поставить это на выбор, например:

   while($row = mysql_fetch_array($result) ){
        echo "<option value='".$row['id']."'>".$row['name']."</option>";
   }

Но я хочу сказать, что выбрать, чтобы поставить только один вариант в верхней части, самый популярный выбор, например:

<option value="55"> John (most popular)</option> 
<option value="4"> George </option>
<option value="13"> Paul </option>
<option value="24"> Ringo </option>

Как я могу исключить только одну строку? Я должен использовать mysql_fetch_array?

Лучше сделать это на SQL? Или используя цикл?

Спасибо!

  • 1
    Говоря как кто-то, кого это раздражает, когда он обнаружил, что «Великобритания» считалась популярной, чтобы посылать ее вместе с нами, и потратил время на ее поиск - пожалуйста, пожалуйста: дублируйте ваши популярные опции вверху, не перемещайте их там.
Теги:

4 ответа

0

Это должно работать:

(SELECT id, name||' (most popular)' AS name FROM table ORDER BY id DESC LIMIT 1)
UNION DISTINCT
(SELECT id, name FROM table)

Запустите запрос, а затем переведите его в HTML. Другим подходом может быть использование JavaScript для перемещения элемента с наивысшим идентификатором вверху после визуализации HTML.

0

ваш лучший вариант - сделать это в SQL. Мы должны увидеть вашу схему и ваш текущий SQL, чтобы помочь правильно. Стоит отметить, что вы можете заказать два столбца, например

SELECT * FROM foo ORDER  BY col1,col2
0

Если вам нужно использовать буквенный порядок, вам, возможно, придется разбить его на два запроса, сначала запросить только для получения самого элемента, а второй - перечислить остальные.

Я уверен, что это выполняется в линейном времени, а сортировка выполняется не быстрее (если не медленнее).

0

Как насчет популярности order by? Это не совсем то, что вы просили, но было бы намного проще, и, может быть, это более логично?

  • 0
    У моей БД более 5000 строк. Я просто хочу только один раз, только для одной строки, только для этого идентификатора 55. Это лучший способ добавить столбец "популярность"? Это не отразится на скорости запроса?
  • 0
    Добавьте логический (битовый) столбец с именем at_top и включите его в свой порядок по.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню