sql - SQL删除多个条件重复记录
问题描述
我有一张表,除了一个字段(例如 col4 )之外,所有字段都有重复记录。我只需要删除 t1.col4 字段为空白的重复条目。
ID Col1 Col2 Col3 Col4
1 Joe 1 2 Yes
2 Sue 1 2
3 Joe 2 3
4 Joe 1 2
目标:仅删除 ID 4
我已经尝试过内部连接(我认为 msaccess 不允许这样做)和 WHERE EXISTS/IN 技术有错误。
Exists 技术删除 t1.col4 为空的所有记录(不仅仅是在子查询中匹配的记录):
DELETE t1.*
FROM t1
WHERE Exists (
SELECT t1.col1, t1.col2, t1.col3
FROM t1
Group by t1.col1, t1.col2, t1.col3
HAVING Count(*) > 1
)
AND t1.col4 Is Null;
我已经尝试过多次迭代 Inner Join 技术,但我在这里读到的所有内容都表明 Access 不支持它。如果有帮助,很高兴发布我尝试过的内容。我还尝试将子查询写入临时表,然后尝试删除与内部联接匹配的记录。
解决方案
您需要一个相关的子查询:
DELETE t1
FROM t1
WHERE EXISTS (SELECT t1.col1, t1.col2, t1.col3
FROM t1 as tt1
WHERE t1.col1 = tt1.col1 AND t1.col2 = tt1.col2 AND t1.col3 = tt1.col3 AND t1.id <> tt1.id
) AND
t1.col4 Is Null;
推荐阅读
- python - vscode python调试器不对断点或stoponentry做出反应
- c++ - “标识符未定义”,试图从私有结构创建一个函数
- django - Django 将图像从 URL 保存到模型导致 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
- if-statement - SAS 错误:SUM 的空参数无效
- python - 使用 Python 通过目录中的多个 .csv 文件循环函数
- jupyter-notebook - 谷歌colab中的数据集丢失了?
- python - 使用前一个日期从现有列创建新的 Pandas 列
- apache-spark - 关于 spark 数据集中的 count 方法的问题?
- mysql - 我如何知道是什么促使自动 MYSQL 查询每天在我的网站上运行?
- google-sheets - 在 Google 表格中加入两个表并计算第二个表中的值