Как вывести все записи из одной таблицы, встречающиеся определенное количество раз в другой таблице MsSQL
Есть 2 таблицы - t1, содержащая перечень названий и их id и t2, содержащая название событий, связанных с id из первой. Во второй таблице нет названий, только id. Подскажите, как вывести перечень названий из первой таблицы, которые встречаются во второй более определенного кол-ва раз. Если не использовать Having
Ответы (2 шт):
Автор решения: Vitaliy Zlobin
→ Ссылка
Можно, конечно и в WHERE подзапрос запилить, но вероятно так будет медленнее работать.
Вот запрос для вывода событий, произошедших более 5 раз:
SELECT t1.Id,
Name
FROM t1
JOIN
(
SELECT t2.Id
FROM t2
GROUP BY t2.Id
HAVING COUNT(*) > 5
) AS t2 ON t1.Id = t2.Id
Автор решения: Andrew Nikolaev
→ Ссылка
Решение, о котором говорит @Akina
Скорее всего у автора вопроса нет необходимости оптимизировать запрос, а именно стоит конкретная задачка, без HAVING
DECLARE @NeedCount INT = 5
SELECT
t1.Id,
t1.Name
FROM t1
INNER JOIN
(
SELECT t2.Id, COUNT(*) AS cnt
FROM t2
GROUP BY t2.Id
) AS t2 ON t1.Id = t2.Id
WHERE t2.cnt > @NeedCount