Как изменить запрос SQL, чтобы выбрать 2 записи из каждой категории? - PullRequest
0 голосов
/ 13 марта 2020

У меня есть запрос, который ищет в таблице search_bd
Этот запрос выбирает все категории

Структура таблицы
id | adv_id | zone_id | street_id

Мне нужно выбрать 2 строки из zone_id (если не NULL) и 2 строки из street_id (если не NULL)

Мой запрос сейчас

SELECT *, MATCH (search_text) 
              AGAINST (s_word IN BOOLEAN MODE) as relev 
              FROM search_bd 
              WHERE MATCH (search_text) 
              AGAINST (s_word IN BOOLEAN MODE)>0 
              ORDER BY adv_id DESC, 
                       zone_id DESC,
                       street_id DESC, 
                       relev DESC 
              LIMIT 10

Как я могу добавить эти условия к этому запросу?

1 Ответ

0 голосов
/ 13 марта 2020

Я не совсем уверен, что вы имеете в виду - как вы хотите обработать строки, где оба, например, не равны нулю? Но вы можете заказать по номеру строки, а затем сделать что-то вроде этого:

SELECT *,
       MATCH (search_text) AGAINST (s_word IN BOOLEAN MODE) as relev 
FROM search_bd 
HAVING relev > 0 AND
       (zone_id IS NOT NULL OR street_id IS NOT NULL)
ORDER BY ROW_NUMBER() OVER (PARTITION BY (zone_id IS NULL), (street_id IS NULL) ORDER BY relev DESC)
LIMIT 4;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...