【发布时间】:2013-08-16 20:55:24
【问题描述】:
我在 MS Access 2010 中开发查询时遇到了一些问题。到目前为止,我还没有在网上找到解决方案,但我觉得我已经很接近了。这是我想要做的:
- 我有两个表,我正在尝试比较和查找相似的项目。表 A 称为“DONOTDELETE_FPTable”。表 B 称为“已导入”。
- 我正在比较两个表中的相同列。 IP、QID 和端口。
- 我的目标是在 Imported 表中找到 DONOTDELETE_FPTable 中出现的类似记录。
- 我在上面提到的所有列上都有一个从 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 不应匹配且不会出现在查询中。
DONOTDELETE_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 / 端口:
实际查询结果(Issue - Null record is missing)
记录 1:IP:10.1.1.1 / QID:225 / 端口:80
记录 2:IP:10.1.1.5 / QID:999 / 端口:
【问题讨论】:
-
如果能正确格式化SQL语句就好了。
-
对不起那个路易斯。感谢您的帮助。
标签: ms-access null ms-access-2010