sql - 使用 SQL 查找/标记重复值
问题描述
我正在尝试更新表中的列以指定记录是否重复。为此,我添加了一个名为“DuplicateRecord”的字段。
我不能在访问中使用查询向导,因为其中的重复选项仅允许将 10 个字段检查为重复项,并且我的表有 10 个以上的字段。
下面的代码对我有用:
Call Module1.RunSQL("UPDATE myTable " & _
"SET myTable.DuplicateRecord = TRUE " & _
"WHERE myTable.[CompanyID] IN (" & _
"SELECT * FROM " & _
"(SELECT myTable.[CompanyID] " & _
"FROM myTable " & _
"GROUP BY myTable.[CompanyID] " & _
"HAVING COUNT(*) > 1 ) T1 ) ")
然而,这段代码只运行一个字段,我需要它运行表中的所有字段(大约有 15 个字段)。
作为一项测试,我尝试使用两个字段来查看是否可以使用以下方法使其工作:
Call Module1.RunSQL("UPDATE myTable " & _
"SET myTable.DuplicateRecord = TRUE " & _
"WHERE myTable.[CompanyID] AND myTable.[Product] IN (" & _
"SELECT * FROM " & _
"(SELECT myTable.[CompanyID], myTable.[Product], COUNT(*) " & _
"FROM myTable " & _
"GROUP BY myTable.[CompanyID], myTable.[Product] " & _
"HAVING COUNT(*) > 1 ) T1 ) ")
但是我收到一条错误消息,说“运行时错误'3306'您编写了一个子查询,该子查询可以返回多个字段,而无需在主查询的 FROM 子句中使用 EXISTS 保留字。修改子查询的 SELECT 语句以仅请求一个领域。”
我试过用谷歌搜索错误,但我似乎无法解决它,因为我不完全理解它。
有谁知道我如何应用重复测试的逻辑?有没有比我目前正在尝试的更简单的方法来做到这一点?我需要为完整记录(15 个字段)执行此操作,因此我有点意识到我目前尝试的方式可能不是最合适的。
解决方案
推荐阅读
- javascript - 在 GraphQL 中获取父级的子参数
- azure-data-factory-2 - Azure ADF:我可以手动设置(或以其他方式强制)管道的最终“状态”为“成功”吗?
- oracle - DBMS_WM 导出 Oracle DB 中的条件
- javascript - 动态创建的 Chart.js 图表过度填充基于时间的 x 轴?
- python - 从单元格中检索完整的富文本数据(单元格内有多种字体颜色/样式)
- ruby-on-rails - Rails Active Storage 将微小图像渲染为 base64
- cluster-computing - 我应该为 hclust 使用 vegdist 还是 dist?
- apache-beam - Beam pipeline - 连续固定时间窗口聚合的差异
- html - 如何使用属性转换 XML?
- c# - .Net Core Visual Studio 项目命令行构建与右键构建相同