Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 获取具有最大日期和空日期的ID的不同记录_Sql_Ms Access - Fatal编程技术网

Sql 获取具有最大日期和空日期的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 | |

这是我的表1和表2,我使用左连接。 虽然看起来可以放在一张桌子上。 表1就像一个主列表,其中id不能重复 因此,在表2中,我添加了可以复制id的名称和日期

+----+---------+----------------+
| 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
子句中的输入错误。