好的,我有两张桌子,像这样:
Person:
| ID | Name |
+----+------+
| 0 | Carl |
+----+------+
| 1 | Max |
+----+------+
| 2 | Lars |
Status
| PersonID | Submitted | Status |
+----------+------------+--------+
| 0 | *DATETIME* | 1 |
+----------+------------+--------+
| 0 | *DATETIME* | 1 |
+----------+------------+--------+
| 0 | *DATETIME* | 3 |
+----------+------------+--------+
| 0 | *DATETIME* | 1 |
+----------+------------+--------+
| 1 | *DATETIME* | 5 |
+----------+------------+--------+
我想要得到的是让用户表中的所有人都处于最后提交的状态。
如果我使用这样的东西:
SELECT DISTINCT
Person.Name As Username,
Status.Status As Userstatus
FROM Person
LEFT JOIN Status
ON Status.PersonID = Person.ID
我得到这样的结果:
| Username | Userstatus |
+----------+------------+
| Carl | 1 |
+----------+------------+
| Carl | 3 |
+----------+------------+
| Max | 5 |
+----------+------------+
| Lars | NULL |
+----------+------------+
那么,我该怎么做呢?在这种情况下,假设最新的 Status.Submitted 为 ==1(Status.PersonID 的最后一行,其中 PersonID == 0),跳过其他 Carls。
编辑:我忘了写我正在使用 SQL Compact。
Edit2:得到了一些很棒的答案,不幸的是我忘了提到我也想获得具有空状态值的用户。我在那里添加了一个新用户到表中