我需要知道如何獲得訪問代碼(IdAccess)最近(或最近)的訪問日期,某些用戶(用IdUser標識)從表AccessTbl使用不同的查詢。每個用戶。錯誤的查詢MySQL選擇最舊或最新的記錄日期
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)
後來,我試着用:
SELECT IdAcess,ID用戶,MAX(TheDate) FROM AccessTbl GROUP BY IdUser;
有...
+---------+--------+--------------+
| 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)
謝謝您的寶貴幫助。
安
你想要什麼?只有最老的IdAcess?你想要兩個 - 最老的還是最近的? – 2013-04-18 04:46:18
對不起,我很困惑....我需要所有用戶的所有最新日期... – Anita 2013-04-18 13:56:57