oracle 找出年龄最接近的2个人

2025-05-10 13:48:33
推荐回答(2个)
回答1:

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
)

回答2:

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)