Как вывести все записи из одной таблицы, встречающиеся определенное количество раз в другой таблице 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
→ Ссылка