我需要知道如何获取访问代码 (IdAccess) 某个用户(使用 IdUser 标识)使用不同查询从表AccessTbl进行的最旧(或更近)访问日期。每个用户。
CREATE TABLE AccessTbl (
IdAcess VARCHAR(16) UNIQUE NOT NULL,
IdUser VARCHAR(16) NOT NULL,
TheDate DATE NOT NULL
);
INSERT INTO AccessTbl (IdAcess, IdUser, TheDate) VALUES
('A00', '0', '1983-12-30'),
('A01', '0', '2004-09-09'),
('A02', '1', '2013-02-01'),
('A03', '1', '2012-05-09'),
('A04', '2', '1983-12-30'),
('A13', '2', '2013-03-01'),
('A05', '2', '2004-09-09'),
('A06', '3', '2013-02-01'),
('A07', '3', '2012-05-09'),
('A08', '4', '1983-12-30'),
('A09', '4', '2004-09-09'),
('A10', '5', '2013-04-01'),
('A12', '5', '2013-03-01'),
('A11', '5', '2012-05-01');
例子:
最新的用户 5 是“A10”和最旧的“A11” 最近的用户 4 是“A09”和最旧的“A08”
但是,我只需要一个查询中所有用户的所有最新日期。
我试过...
SELECT IdAcess, IdUser, TheDate
FROM AccessTbl
WHERE (
TheDate IN (SELECT MAX(TheDate) FROM AccessTbl GROUP BY IdUser)
) GROUP BY IdUser;
但是我有:
+---------+--------+
| IdAcess | IdUser |
+---------+--------+
| A01 | 0 |
| A02 | 1 |
| A05 | 2 | //BAD!!!!! must be A13
| A06 | 3 |
| A09 | 4 |
| A10 | 5 |
+---------+--------+
6 rows in set (0.13 sec)
后来,我尝试了:
按 IdUser 从 AccessTbl 组中选择 IdAcess、IdUser、MAX(TheDate);
拥有...
+---------+--------+--------------+
| IdAcess | IdUser | MAX(TheDate) |
+---------+--------+--------------+
| A00 | 0 | 2004-09-09 | //Must be A01
| A02 | 1 | 2013-02-01 |
| A04 | 2 | 2013-03-01 | //Must be A13
| A06 | 3 | 2013-02-01 |
| A08 | 4 | 2004-09-09 | //Must be A09
| A10 | 5 | 2013-04-01 |
+---------+--------+--------------+
6 rows in set (0.00 sec)
感谢您的宝贵帮助。
安