Задать вопрос
alex5e
@alex5e

Как грамотно облегчить Select для выборки нескольких значений, удовлетворяющих условию?

При выборке данных из таблицы по условию с join столкнулся с тем, что время выполнения запроса достаточно велико. В результате получаю массив из нескольких сотен записей, но выводить мне нужно только 7. Как грамотно построить запрос, чтобы производилась выборка первых семи найденных записей, удовлетворяющих определенному условию, и имеющих максимальное значение определенного поля?
Я так понимаю что LIMIT для выборки 7 найденных записей не подходит, т.к. для него нужно указывать позицию, а в моем случае позиция не известна.

SELECT `gkinfo`.`id`, `title`
FROM `ga_keyword_info` `gkinfo`
JOIN `ga_keyword` `gk` ON gkinfo.keyword_id=gk.id
WHERE `gk`.`campaign_id` IN ('1', '2', '3' и тд..);
  • Вопрос задан
  • 2954 просмотра
Подписаться 1 Оценить 5 комментариев
Решения вопроса 1
@IceJOKER
Web/Android developer
SELECT `gkinfo`.`id`, `title`
FROM `ga_keyword_info` `gkinfo`
JOIN `ga_keyword` `gk` ON gkinfo.keyword_id=gk.id
WHERE `gk`.`campaign_id` IN ('1', '2', '3' и тд..)
ORDER BY someField desc limit 7;
--где someField - поле по которому нужно сортировать(desc(по убыванию) - от большего к меньшему, то есть выберет 7 записей с максимальными значениями поля someField
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
psykrab
@psykrab
а просто
SELECT top 7 `gkinfo`.`id`, `title`
не подходит?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы