【问题标题】:Max(date) and followers最大(日期)和关注者
【发布时间】: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;

问题是每次我只得到所有用户的一个名字,或者在最坏的情况下是一个空集。 感谢您的宝贵时间。

【问题讨论】:

    标签: sql date xampp max


    【解决方案1】:

    您可以使用substring_index()/group_concat() 技巧来获取最年轻用户的姓名。最年轻的用户对date_of_birth 的值最大,所以:

    select f.user1_name,
           substring_index(group_concat(f.user2_name order by u.date_of_birth desc), ',', 1) as youngest
    from follows f join
         user_inf u
         on f.user2_name = u.name
    group by f.user1_name;
    

    【讨论】:

    • 谢谢你,伙计。这很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 2012-09-05
    相关资源
    最近更新 更多