【发布时间】:2018-10-18 17:56:20
【问题描述】:
我想要一个显示最完整匹配记录的查询,如下所示。我正在使用 MS Access,但如果没有访问解决方案,ANSI SQL 或 Oracle 答案就可以了。
- col2 是唯一一个不可为空的列,但是从结果可以看出,col2 中可能有多个相同值的记录返回
- 如您所见,在合并记录以生成结果时会忽略空值。
表 1
col1 col2 col3 col4
---------------------------------
c d g
c d
d g
d e g
d e
e g
e e g
e e
e g
e f
g h
查询结果
col1 col2 col3 col4
---------------------------------
c d g
d e g
e e g
e f
g h
感谢您的尝试,但经过进一步调查,我发现使用“加入”和“不存在”的两种建议解决方案都有一个错误。
建议的“加入”解决方案中的错误 有一个如下所示的错误,其中两行在建议中变成了 4
col1 col2 col3 col4
d g i
d h j
查询结果
col1 col2 col3 col4
d g i
d g j
d h i
d h j
建议的“不存在”解决方案中的错误
通过添加右括号修复查询后,我能够运行“不存在”解决方案。在 col2 上匹配但在 col3 上不匹配的两行合并为一行。它们有不同的数据,应该是唯一的
col1 col2 col3 col4 --------------------------------- 我 d h 查询结果 col1 col2 col3 col4 --------------------------------- 我【问题讨论】:
-
在您的示例中,返回的行始终是原始行之一。总是这样吗?
-
“最完整”是否也可以说“包含数据值的列最多的行”?
-
Gordon - 它不必是原始行之一。 Jacob H- 你可以说“包含数据值的列最多的行”
标签: sql ms-access-2010