@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.
  • Вопрос задан
  • 2332 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Benderoki Автор вопроса
Немного кривоватое решение, но вроде работает. Может все таки есть варианты проще?
SELECT id, count(id ) 
FROM (SELECT DISTINCT * FROM tablica
WHERE text
IN (...)) as t1
GROUP BY id

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

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

Войти через центр авторизации
Похожие вопросы