在MySQL中,是否有可能在SELECT语句中遍历子查询的所有行,并且对于每一行(" r ")返回一个值,该值是由" r "通知的进一步查询的结果?
。如果我有一个朋友的出生日期表,我如何从另一个名人的出生日期表中得到与每个朋友的出生日期相近的最近的名人的生日?
http://www.sqlfiddle.com/!9/a5d62f
我希望生成一个matching_birth_dates表,包含以下行:
<表类>
id
famous_name
friend_name
famous_dob
friend_dob
tbody><<tr>1 贝克汉姆 莎拉荷兰 05/01/1980 07/02/1981 2大卫·林奇 约翰·史密斯 02/05/1960 02/06/1959 3 贝克汉姆 Jane Doe 05/01/1980 02/04/1972 表类>
您可以首先在子查询中找到最接近的名人,然后在外部查询中获得人和名人:
select friend.id, f.name, friend.name, f.dob, friend.dob
from (
select fa.id, fa.name, fa.dob, min(abs(datediff(fa.dob, fr.dob))) as diff
from famous_birth_dates fa
join friends_birth_dates fr on 1=1
group by fa.id, fa.name, fa.dob
) as f
join friends_birth_dates friend on f.diff = abs(datediff(f.dob, friend.dob))
order by friend.id
参见db sqlfiddle