【发布时间】:2015-01-27 03:31:00
【问题描述】:
我有以下问题要在 sql 中解决。我需要为每个用户获取他/她关注的最年轻的用户。我有这些表:
用户信息表(user_inf):
+----------+------------------+---------------+
| name | address | date_of_birth |
+----------+------------------+---------------+
| Andreas | Martiou 25 | 1990-12-02 |
| Anna | Aiakidon 20 | 1989-07-15 |
| Aris | Papandreou 10 | 1987-03-12 |
| Dimitris | Dodonis 3 | 1992-09-07 |
| Katerina | 28 Oktobriou 4 | 1993-01-09 |
| Kostas | Kasioumi 3 | 1992-12-12 |
| Maria | Kalari 8 | 1993-08-31 |
| Panos | Aneksartisias 13 | 1991-05-27 |
| Petros | Panepistimiou 9 | 1992-04-15 |
| Yannis | Ithakis 20 | 1993-07-03 |
+----------+------------------+---------------+
关注其他用户的用户(关注):
+------------+------------+
| user1_name | user2_name |
+------------+------------+
| Aris | Andreas |
| Kostas | Andreas |
| Panos | Andreas |
| Petros | Andreas |
| Yannis | Andreas |
| Aris | Anna |
| Dimitris | Anna |
| Maria | Anna |
| Anna | Aris |
| Maria | Aris |
| Panos | Aris |
| Yannis | Aris |
| Andreas | Katerina |
| Kostas | Katerina |
| Aris | Kostas |
| Maria | Kostas |
| Anna | Maria |
| Dimitris | Maria |
| Anna | Panos |
| Aris | Panos |
| Kostas | Panos |
| Maria | Panos |
| Aris | Yannis |
| Maria | Yannis |
+------------+------------+
我的代码是这个:
select Fol.user2_name
from user_inf as Usr, (select user2_name, max(date_of_birth) as MaxDate
from user_inf as U
inner join follows as F
on (F.user2_name = U.name )
inner join
follows as Fol
on(Fol.user2_name = t1.user2_name))t1
where t1.MaxDate = Usr.date_of_birth
group by Fol.user2_name;
问题是每次我只得到所有用户的一个名字,或者在最坏的情况下是一个空集。 感谢您的宝贵时间。
【问题讨论】: