使用SQL查询为每个用户获取上次时间

时间:2017-02-22 14:49:23

标签: sql

我正在尝试从每个用户获取最后的登录时间但是,当我在select语句中使用MAX时,SQL查询不起作用会抛出有关Group By的错误,如果我不使用MAX,则查询返回正确的结果。以下是日期示例:

用户表

.nomargin { margin:0 }

的UserInfo

Username        Date
--------        ------
user1           1/22/2017
user2           1/22/2017
user1           1/23/2017
user3           1/20/2017
user2           1/19/2017
user1           1/10/2017
user3           1/21/2017

代码

   FullName         Dept    Username
   --------         ----    --------
   John Doe         IT      user1
   Jane Smith       HR      user2
   John Smith       IT      user3

期望的结果

   SELECT UserTable.UserName, Usertable.Max(EndTime) as 'Date', UserInfo.Fullname 
   FROM UserTable 
   Left JOIN  UserInfo 
   On  UserTable.UserName = UserInfo.Fullname

2 个答案:

答案 0 :(得分:1)

您的表别名位于错误的位置:

MAX()

别名限定列名,指定它来自哪个表。该表与SELECT ut.UserName, MAX(ut.EndTime) as "Date", ui.Fullname FROM UserTable ut LEFT JOIN UserInfo ui ON ut.UserName = ui.Fullname GROUP BY ut.UserName; 函数无关。我也强烈反对使用列别名的单引号。很容易将列名与字符串常量混淆。

我还建议您学习使用表别名的缩写:

select min(date) from fixtures where date>current_date

这使查询更容易编写和阅读。

答案 1 :(得分:-1)

这个怎么样

    SELECT UserTable.UserName, Usertable.Max(EndTime) as 'Date', UserInfo.Fullname 
       FROM UserTable 
       Left JOIN  UserInfo 
       On  UserTable.UserName = UserInfo.Fullname 
    GROUP BY UserTable.UserName, UserInfo.Fullname