Después de leer mejor tu consulta, te propongo esto:
Código:
SELECT T2.archivo_Id
FROM archivos_etiquetas
INNER JOIN
(SELECT archivo_id
FROM archivos_etiquetas WHERE etiqueta_id IN(1)
) AS t1 USING(archivo_id)
WHERE T2.etiqueta_id IN(2) ;
¿Por qué usar IN y no HAVING o a = b?
Porque la comparación de HAVING y una comparación a = b, se hace sobre la tabla resultado de la selección, incluyendo resultados parciales, mientras que IN omite los registros que no cumplen la condición,
mientras los lee de la tabla.