我在 MS Access 2010 中开发查询时遇到了一些问题。到目前为止,我还没有在网上找到解决方案,但我觉得我真的很接近了。这是我正在尝试做的事情:
- 我有两张表,我正在尝试比较并找到类似的项目。表 A 称为“DONOTDELETE_FPTable”。表 B 称为“导入”。
- 我正在比较两个表中的相同列。IP、QID 和端口。
- 我的目标是在 DONOTDELETE_FPTable 中的 Imported 表中找到类似的记录。
- 我在上面提到的所有列上都有一个从 DONOTDELETE_FPTable 到 Import 表的左连接设置。
问题:我有一个记录可能在两个表的 PORT 列中都有一个空值的情况。我需要查询返回:
- 两个表之间所有列数据相同的所有匹配记录
- 以及在两个表之间的 PORT 列中具有匹配 IP、QID 和可能为 null 的任何匹配记录。
这是我此时使用“LIKE”标准的 SQL。我删除了一个我试图测试空值的数据,因为我无法让它工作。感谢您提前提供帮助。
SQL 语句:
SELECT DONOTDELETE_FPExcept.*
FROM
DONOTDELETE_FPExcept
LEFT JOIN Imported
ON
(DONOTDELETE_FPExcept.Port = Imported.PORT)
AND (DONOTDELETE_FPExcept.QID = Imported.QID)
AND (DONOTDELETE_FPExcept.IP = Imported.IP)
WHERE
(((Imported.IP) Like [DONOTDELETE_FPExcept].[ip])
AND ((Imported.qid) Like [DONOTDELETE_FPExcept].[QID])
AND ((Imported.PORT) Like [DONOTDELETE_FPExcept].[Port]));
以下是表中的一些示例数据。IP、QID 和端口是列:
导入表:
- 记录1:IP:10.1.1.1/QID:225/端口:80
- 记录2:IP:10.1.1.1/QID:111/端口:
- 记录 3:IP:10.1.1.5 / QID:999 / 端口:8080
- 记录4:IP:10.1.1.5/QID:999/端口:
注意:记录 2 - 空白端口为空。记录 3 不应匹配且不会出现在查询中。
DONOOTDELETE_FPTable
- 记录1:IP:10.1.1.1/QID:225/端口:80
- 记录2:IP:10.1.1.1/QID:111/端口:
查询的预期结果(两个表之间的匹配记录与 Null):
- 记录1:IP:10.1.1.1/QID:225/端口:80
- 记录2:IP:10.1.1.1/QID:111/端口:
实际查询结果(问题 - Null 记录丢失)
记录1:IP:10.1.1.1/QID:225/端口:80
记录2:IP:10.1.1.5/QID:999/端口: