【发布时间】:2021-07-26 21:25:52
【问题描述】:
我有 2 个具有父/子层次结构的表,我正在尝试为每条父记录提取最新子记录的 ID,同时还对正在提取的子记录应用条件。
这是我的表格的样子:
-----------
| Quizzes |
-----------
| ID |
-----------
| 1 |
| 2 |
| 3 |
-----------
-------------------------------------
| QuizAttempts |
-------------------------------------
| ID | QuizID | AttemptedAt |
-------------------------------------
| 1 | 1 | 2021-01-01 05:00:00 |
| 2 | 1 | 2021-01-01 08:30:00 |
| 3 | 2 | 2021-01-01 05:00:00 |
| 4 | 3 | 2021-01-01 07:00:00 |
| 5 | 3 | 2021-02-01 07:00:00 |
| 6 | 3 | 2021-03-01 07:00:00 |
-------------------------------------
现在,假设我想为尝试从2021-01-01 00:00:00 到2021-01-01 23:59:59 的每个Quiz 提取最新QuizAttempt 的ID,看起来像这样:
------------------------------------------------
| QuizID | QuizAttemptID | AttemptedAt |
------------------------------------------------
| 1 | 2 | 2020-01-01 08:30:00 |
| 2 | 3 | 2020-01-01 05:00:00 |
| 3 | 4 | 2020-01-01 07:00:00 |
------------------------------------------------
目前,我只是在做一个自引用连接来比较 ID 以获取最新的 QC:
SELECT attempts1.ID
FROM QuizAttempts AS attempts1
LEFT OUTER JOIN QuizAttempts AS attempts2
ON (attempts1.QuizID = attempts2.QuizID
AND attempts1.ID < attempts2.ID)
WHERE attempts2.ID IS NULL;
这适用于提取最新的子记录。但是,当我添加日期范围条件(例如添加 attempts1.AttemptedAt BETWEEN '2021-01-01 00:00:00' AND '2021-01-01 23:59:59')时,我得到空结果。
【问题讨论】: