A completely different way to do it is this:
SELECT a.intId, b.intId
FROM MyTable a
CROSS JOIN MyTable b
WHERE a.intId + 1 < b.intId
AND NOT EXISTS (
SELECT NULL FROM MyTable c
WHERE c.intId > a.intId
AND c.intId < b.intId
)
Which will give pairs of IDs between which all the records have been removed.
So if the IDs were (1, 2, 3, 6, 7, 12), it would return (3, 6) and (7, 12).
EDIT:
This is very inefficient if the table is large. The following method is much better:
SELECT g.intStartId, MIN(t.intId) AS intEndId
FROM (
SELECT intId AS intStartId
FROM MyTable AS a
WHERE NOT EXISTS (
SELECT NULL FROM MyTable AS b
WHERE b.intId = a.intId + 1
)
) AS g
CROSS JOIN MyTable AS t
WHERE t.intId > g.intStartId
GROUP BY g.intStartId
So we first find IDs that mark the start of a gap, and then we find the lowest ID we have greater than each to mark the end of the gap.