我有一列MySQL表userid和createdon其中createdon列有DATE数据类型.
---------------------------------------------------------------------------------
ID UserId CreatedOn
1 65 2013-06-13
2 54 2013-07-03
3 34 2013-08-23
4 65 2013-09-13
5 89 2013-09-13
Run Code Online (Sandbox Code Playgroud)
现在我想要最后创建的用户标识在2013-09-08之前.正确的答案是用户ID 54,34
运用
select userid from table where createdon <'2013-09-08'
Run Code Online (Sandbox Code Playgroud)
返回65,54,34和usind
select userid from table where userid notin (select userid from table where createdon > '2013-09-07')
Run Code Online (Sandbox Code Playgroud)
花了很多时间.
如何获取最后创建的行<2013-09-08
尝试
SELECT UserID, MAX(CreatedOn) CreatedOn
FROM table1
GROUP BY UserId
HAVING CreatedOn < '2013-09-08'
Run Code Online (Sandbox Code Playgroud)
输出:
| USERID | CREATEDON | |--------|-------------------------------| | 34 | August, 23 2013 00:00:00+0000 | | 54 | July, 03 2013 00:00:00+0000 |
这是SQLFiddle演示