@roadtoexp

Как выбрать данные без повторений?

Есть запрос:
SELECT 
                sign(coalesce(location_id, 0)) + sign(coalesce(division_id, -1)) + sign(coalesce(position_id, -2)) as score, keyword.* 
            FROM 
                keyword 
            WHERE 
                city_id = $cityId AND 
                (division_id = $divisionId OR division_id IS NULL) AND 
                (position_id = $positionId OR division_id IS NULL) AND 
                (location_id = $locationId OR location_id IS NULL) AND
                MATCH (keyword) AGAINST ('$keys') 
            GROUP BY 
                title 
            ORDER BY 
                score 
            DESC LIMIT 10

Он мне возвращает запись которая совсем не бодходит по условиям. Так видимо работает group by. Как мне отмести те записи которые подходят по условиям, имеют одинаковый title и отличаются только по score
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 1
LaRN
@LaRN
Senior Developer
Попробуйте так:

SELECT 
      sign(coalesce(location_id, 0)) + sign(coalesce(division_id, -1)) + sign(coalesce(position_id, -2)) as score, title
  FROM 
      keyword 
 WHERE 
      city_id = $cityId AND 
      (division_id = $divisionId OR division_id IS NULL) AND 
      (position_id = $positionId OR division_id IS NULL) AND 
      (location_id = $locationId OR location_id IS NULL) AND
      MATCH (keyword) AGAINST ('$keys') 
GROUP BY 
      title 
ORDER BY 
      score 
DESC LIMIT 10
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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