我有以下SQL查询。在这个查询中,我还加入了一个名为“unique”的访问查询表tblTestImport。我正在尝试将查询“unique”集成到下面的代码中。我没有运气,请帮忙。
DELETE tblTestImport.ID
FROM tblTestImport
WHERE tblTestImport.[ID]
in (SELECT tblTestImport.ID
FROM tblTestImport
LEFT JOIN **[unique]**
ON tblTestImport.ID = **unique.**LastOfID
WHERE (((**unique.**LastOfID) Is Null)));
“唯一”查询的代码
SELECT Last(tblTestImport.ID) AS LastOfID
FROM tblTestImport
GROUP BY tblTestImport.Url, tblTestImport.Kms, tblTestImport.Price, tblTestImport.Time;
更多信息:我正在尝试从访问表中删除重复项,并仅保留唯一的重复项。 tblTestImport有重复的记录。 “唯一”查询显示唯一记录。然后,我使用“唯一”查询连接tblTestImport表,以确定tblTestImport中不存在哪些唯一记录。这给了我一个列表重复,我想删除。
在大块代码中,我有[唯一],我想用下面的一小段代码替换。
答案 0 :(得分:1)
假设id
永远不会NULL
。
为什么呢? unique.lastOfId
始终是tblTestImport
中的有效ID。因此,LEFT JOIN
将始终匹配,而lastOfId
永远不会是NULL
。
因此,子查询中没有行。
我的建议是你问另一个问题。解释您想要做什么,并提供样本数据和期望的结果。
答案 1 :(得分:0)
根据您当前的问题设置,很难确切地说出您所追求的内容。但是,这可能是您正在寻找的:
List<String> filepaths = new ArrayList<String>("filepath1", "filepath2", "filepathMissing");
return pipeline
.apply("GatherFiles", Create.of(filepaths)).setCoder(StringUtf8Coder.of())
.apply("GatherFileData", TextIO.readAll().withEmptyMatchTreatment(EmptyMatchTreatment.ALLOW))
.apply("ApplyCustomDoFn", ParDo.of(new CustomDoFn()))
.apply("Group", GroupByKey.<String, String>create())
.apply("AnotherCustomDoFn", ParDo.of(new AnotherCustomDoFn()));
(这是上一个查询中的简单嵌套查询,但它都取决于数据本身的关系。此查询假定它们链接在相同的tblTestImport.ID字段上)
答案 2 :(得分:0)
尝试以下方法,未经测试:
DELETE FROM tblTestImport
WHERE ID <> (SELECT Min(ID) AS MinOfID FROM tblTestImport AS Dupe
WHERE (Dupe.Url= tblTestImport.Url)
AND (Dupe.Kms= tblTestImport.Kms)
AND (Dupe.Price= tblTestImport.Price)
AND (Dupe.Time= tblTestImport.Time));
的解决方案