我有一个具有以下架构的表:
CREATE TABLE IF NOT EXISTS `ATTEMPTS`
(
ID INT NOT NULL AUTO_INCREMENT,
USERS_ID INT,
TESTS_ID INT,
SCORE FLOAT(10, 4),
CREATED DATETIME DEFAULT NULL,
MODIFIED DATETIME DEFAULT NULL,
IS_DELETED BIT(1) DEFAULT NULL,
PRIMARY KEY(ID)
);
一个用户可以对不同的测试进行多次尝试。我正在尝试考虑为每个用户返回所有最近的测试尝试的最佳方式。因此,如果用户 A 对测试 8 进行了两次尝试,对测试 17 进行了三次尝试,而用户 B 对测试 8 进行了一次尝试,则返回的表将有 3 条记录:两条来自用户 A,一条来自用户 B。这些记录分别是最最近对每种测试类型进行的测试尝试。
我认为为此需要自我加入,但我不确定。有没有办法使用自连接?我不确定从这张表中返回我想要的东西的最佳解决方案是什么。考虑到数据的组织,我想不出一种按“最新”过滤的方法。基本上,我不确定如何构建这个查询。
到目前为止,这是我的(还没有工作)查询:
SELECT a.USER_ID,
a.TEST_ID,
a.SCORE,
a.MODIFIED
FROM ATTEMPTS AS a,
ATTEMPTS AS b
WHERE a.USER_ID = b.USER_ID
AND (Some clause to deal with most recent?)
感谢任何可以提供帮助的人。