SELECT RANGES.FROM_NUM AS BASE_FROM_NUM, RANGES.TO_NUM AS BASE_TO_NUM,
OVERLAP.FROM_NUM AS OVERLAP_FROM_NUM, OVERLAP.TO_NUM AS OVERLAP_TO_NUM
FROM RANGES
INNER JOIN RANGES OVERLAP
ON (((OVERLAP.FROM_NUM <= RANGES.FROM_NUM) AND (OVERLAP.TO_NUM >= RANGES.FROM_NUM))
OR ((OVERLAP.FROM_NUM <= RANGES.TO_NUM) AND (OVERLAP.TO_NUM >= RANGES.TO_NUM)))
AND ((OVERLAP.FROM_NUM <> RANGES.FROM_NUM) AND (OVERLAP.TO_NUM <> RANGES.TO_NUM))
最后一行只是停止为自己报告重叠的行。在实践中,您可以使用唯一键删除它们(以防万一您有具有相同 from/to 数字的重复行):
AND (OVERLAP.ID <> RANGES.ID)