Вот пример таблицы:Как получить верхние N записей таблицы MySQL, исключив массив групп?
Table: websites
Domain | Category | Popularity
google.com | 0 | 13,430
yahoo.com | 0 | 1,094
facebook.com | 1 | 23,943
youtube.com | 2 | 17,320
imdb.com | 3 | 6,094
stackoverflow.com | 4 | 2,930
ebay.com | 5 | 5,748
yandex.com | 5 | 3,748
Я хотел бы вернуть лучшие результаты N исключая категории CE = [C1, C2, C3 ... Cn] отсортированы по популярности.
Например:
В ТОП 3 результатов Исключив поисковых систем CE = [0] отсортированы по популярности являются:
Domain | Category | Popularity
facebook.com | 1 | 23,943
youtube.com | 2 | 17,320
imdb.com | 3 | 6,094
топ-3 результаты, исключив все категории, кроме поисковых систем CE = [ 1, 2, 3, 4, 5] упорядочены по популярности:
Domain | Category | Popularity
google.com | 0 | 13,430
yahoo.com | 0 | 1,094
Давайте работать над последним запросом.
Я ожидаю, что это выглядит следующим образом:
SELECT domain, category, popularity FROM (SELECT domain, category, popularity FROM websites WHERE category != [1, 2, 3, 4, 5] ORDER BY popularity) LIMIT 0, 3
- Как передать массив исключенных категорий как WHERE заявление?
- Как заказать его по возрастанию/убыванию популярности?
- Выполняем ли я его перед или после того, как я выбираю те, которые имеют подходящий тип категории (качество работы)?
Меня не волнует, если реакция упорядочена или нет по популярности. Это то, что я могу redo на стороне клиента.
Я знаю, что это материал на уровне ядра, но есть ли способ ускорить его? Это ведь целая таблица сканирования!
Зачем исключать все, что не является, а не включать все, что есть? – verhie
Потому что я люблю наказать себя. :) Кроме того, он не прерывает мой ход мыслей. – Vulkan