I would recommend doing a join checked with group by and having or exists checks
JOIN
SELECT tableA.NO
FROM tableBB
JOIN tableA ON tableA.NO = tableBB.GRI_NO
WHERE
tableBB.GRO_NO IN (62,50,70)
GROUP BY tableA.NO
HAVING COUNT(DISTINCT tableBB.GRO_NO) = 3 /* specify the count of GRO_NO's required */
EXISTS check could be used in line with existing AND check (in OP question)
SELECT tableA.NO
FROM tableA
WHERE
EXISTS (SELECT 'NO is in tableBB' FROM tableBB
WHERE tableA.NO = tableBB.GRI_NO AND tableBB.GRO_NO = 62)
AND EXISTS (SELECT 'NO is in tableBB' FROM tableBB
WHERE tableA.NO = tableBB.GRI_NO AND tableBB.GRO_NO = 50)
AND EXISTS (SELECT 'NO is in tableBB' FROM tableBB
WHERE tableA.NO = tableBB.GRI_NO AND tableBB.GRO_NO = 70)
Depending on the distribution of your data you should find one or the other will run faster.
If you needed to expand the criteria of a particular GRO_NO ie: for 70, check that IsActive=1, you could do:
JOIN
SELECT tableA.NO
FROM tableBB
JOIN tableA ON tableA.NO = tableBB.GRI_NO
WHERE
tableBB.GRO_NO IN (62,50,70)
/* GRO_NO specific clause */
AND ((tableBB.GRO_NO = 70 AND tableBB.IsActive = 1) OR tableBB.GRO_NO != 70)
GROUP BY tableA.NO
HAVING COUNT(DISTINCT tableBB.GRO_NO) = 3 /* specify the count of GRO_NO's required */
EXISTS
SELECT tableA.NO
FROM tableA
WHERE
EXISTS (SELECT 'NO is in tableBB' FROM tableBB
WHERE tableA.NO = tableBB.GRI_NO AND tableBB.GRO_NO = 62)
AND EXISTS (SELECT 'NO is in tableBB' FROM tableBB
WHERE tableA.NO = tableBB.GRI_NO AND tableBB.GRO_NO = 50)
AND EXISTS (SELECT 'NO is in tableBB' FROM tableBB
WHERE tableA.NO = tableBB.GRI_NO AND tableBB.GRO_NO = 70
AND tableBB.IsActive = 1)