Sql 获取具有最大日期和空日期的ID的不同记录
这是我的表1和表2,我使用左连接。 虽然看起来可以放在一张桌子上。 表1就像一个主列表,其中id不能重复 因此,在表2中,我添加了可以复制id的名称和日期Sql 获取具有最大日期和空日期的ID的不同记录,sql,ms-access,Sql,Ms Access,这是我的表1和表2,我使用左连接。 虽然看起来可以放在一张桌子上。 表1就像一个主列表,其中id不能重复 因此,在表2中,我添加了可以复制id的名称和日期 +----+---------+----------------+ | id | Date | Name | +----+---------+----------------+ | 1 | 5/25/17 | Monica Coleman | | 1 | 5/26/17 | Kelsi Mines | |
+----+---------+----------------+
| id | Date | Name |
+----+---------+----------------+
| 1 | 5/25/17 | Monica Coleman |
| 1 | 5/26/17 | Kelsi Mines |
| 2 | | |
| 3 | 5/9/17 | Vanessa Heart |
| 4 | 5/8/17 | Ryan Evans |
| 4 | 5/10/17 | Sharpay Evans |
| 5 | | |
| 6 | | |
| 7 | 5/6/17 | Troy Bolton |
+----+---------+----------------+
如果我使用这个代码
SELECT P.id, R.DateAdded, R.Name FROM Table1 AS P LEFT JOIN Table2 AS R ON P.id=R.id WHERE ((([R.DateAdded])=(SELECT MAX(DateAdded) FROM R WHERE InventoryID = R.InventoryID)));
。。。然后这些结果表明
+----+---------+----------------+
| id | Date | Name |
+----+---------+----------------+
| 1 | 5/26/17 | Kelsi Mines |
| 3 | 5/9/17 | Vanessa Heart |
| 4 | 5/10/17 | Sharpay Evans |
| 7 | 5/6/17 | Troy Bolton |
+----+---------+----------------+
但我想让声明返回的是
+----+---------+----------------+
| id | Date | Name |
+----+---------+----------------+
| 1 | 5/26/17 | Kelsi Mines |
| 2 | | |
| 3 | 5/9/17 | Vanessa Heart |
| 4 | 5/10/17 | Sharpay Evans |
| 5 | | |
| 6 | | |
| 7 | 5/6/17 | Troy Bolton |
+----+---------+----------------+
在大多数数据库中,您会将条件添加到
ON
子句中(或使用行号()
。MS Access都不支持这两种情况。因此,请使用子查询:
SELECT P.id, R.DateAdded, R.Name
FROM Table1 AS P LEFT JOIN
(SELECT R.*
FROM Table2 AS R
WHERE R.DateAdded = (SELECT MAX(R2.DateAdded) FROM Table2 R2 WHERE R.InventoryID = R2.InventoryID)
) as R
ON P.id = R.id
好的,我得到了我的答案。我使用的是空值
SELECT P.id, R.DateAdded, R.Name FROM Table1 AS P LEFT JOIN Table2 AS R ON P.id=R.id WHERE ((([R.DateAdded])=(SELECT MAX(DateAdded) FROM R WHERE InventoryID = R.InventoryID))) OR R.DateAdded IS NULL;
@elaine8s…可能是由于
WHERE
子句中的输入错误。