一个SELECT语句,迭代子查询的所有行,对于每一行("r")返回一个值,该值是由"r&q



在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/198007/02/19812大卫·林奇约翰·史密斯02/05/196002/06/19593贝克汉姆Jane Doe05/01/198002/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

相关内容

最新更新