select e3.id,e4.id
from person e3,person e4
where abs(e3.age - e4.age) =
(
select min(abs(e1.age - e2.age))
from person e1,person e2
where e1.id <> e2.id
)
select distinct aid,bid from
(
select a.id aid,b.id bid,abs(a.age-b.age) minusage
from person a,person b
where a.id<>b.id
) t
order by t.minusage
思路:person表与自己关联,通过age相减得到年龄差(取绝对值),然后order by 此年龄差,然后去除重复数据(distinct)