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

Как сделать DISTINCT и order by одновременно?

Есть таблица с двумя столбцами id и text, нужно сделать так чтобы при подачи массива значений различного text'а находились id'ы у которых так же встречается это значение и выводились id'ы с наибольшим числом пересечений текстов.
Т.е. есть id = 1 и пары значений (text1,text2,text3)
Есть id =2 и (text2,text3,text4)
Задаю text2, text3,text4 и выводится id1: 2, id2:3
Вроде бы легкий запрос
SELECT DISTINCT id, count( id ) 
FROM table
WHERE text
IN ("text1", "text2", "text3")
GROUP BY id


НО в таблице зачастую попадаются одинаковые пары значений id, text, от этого избавляет select distinct, но он не работает в связке с group by.
  • Вопрос задан
  • 2334 просмотра
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Академия Eduson
    FullStack-разработчик: тариф PRO
    14 месяцев
    Далее
  • Skillbox
    Python-разработчик
    10 месяцев
    Далее
  • GB (GeekBrains)
    Профессия Python-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@Benderoki Автор вопроса
Немного кривоватое решение, но вроде работает. Может все таки есть варианты проще?
SELECT id, count(id ) 
FROM (SELECT DISTINCT * FROM tablica
WHERE text
IN (...)) as t1
GROUP BY id

Количество строк просто огромнейшее будет, сейчас разница во времени выполнения небольшая, но потом боюсь скажется.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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