Хотите упорядочить по приведению, но после значения

#php #mysql #sql #select

#php #mysql #sql #выберите

Вопрос:

Я использую ajax для извлечения большего количества фотографий в галерею на основе просмотров. В галерее уже есть набор из 10 фотографий. Теперь я хочу получить следующие 10 фотографий в порядке, основанном на количестве просмотров от высокого к низкому.

     $last_image_view_count = 232;

    "SELECT * from `gallery` ORDER BY CAST(`views`<'$last_image_view_count' AS SIGNED) DESC LIMIT 10";
 

Приведенный выше код работает…но это не в порядке (230 — 216 — 205 и т.д.). Он разбросан, но меньше 232. Мне нужна помощь, чтобы выяснить, как упорядочить его от высокого к низкому.

Комментарии:

1. Сравнение возвращает либо 0 или 1 . Если вы хотите сортировать по количеству просмотров, почему вы сортируете по сравнению?

2. Разве это сравнение не должно быть в предложении WHERE?

Ответ №1:

 "SELECT * from `gallery` WHERE `views` < '$last_image_view_count' ORDER BY `views`  DESC LIMIT 10";
 

Используйте WHERE-statement, чтобы выбрать только желаемый набор данных (насколько я понимаю, вы хотите их, с количеством просмотров, которое меньше $last_image_view_count ).

Затем вы можете упорядочить его по views столбцу.

Нет необходимости приводить его в инструкции ORDER BY. Что вы делаете со своим кодом, так это упорядочиваете его по 1 or 0 (1, если views меньше вашей переменной, в противном случае 0).

Комментарии:

1. Это работает, но он упорядочивает его по первому числу целого числа… 402, 4, 398, 39, 38, 37, 365, 362, и т.д.