Эту задачу можно решить в два подхода:
- Выясняем, для каких значений id_work выполняется условие наличия хотя бы по одному значению для type из множества (2, 4)
- Для найденных значений id_work выбираем полный набор данных для type из множества (2, 4)
На практике это означает запрос использующий подзапрос для п. 1 и использование inner join дл п. 2:
SELECT
T.id
FROM
(
SELECT
id_work
FROM
T
WHERE
type IN (2, 4)
GROUP BY
id_work
HAVING
count(distinct type) = 2
) AS filteredIdWork
INNER JOIN
T
ON
T.id_work = filteredIdWork.id_work
AND T.type IN (2, 4)