Postgresql:按 CompanyID 和 CustomerID 删除重复记录
Postgresql: deleting duplicate records by CompanyID and CustomerID
我无法使用以下查询。如果我删除查询的最后一行,它将起作用。非常感谢任何建议。
DELETE FROM "ProjectMaster"
USING "ProjectMaster" ua2
WHERE "ProjectMaster"."EngagementName" = ua2."EngagementName"
AND "ProjectMaster"."ProjectMasterID" < ua2."ProjectMasterID"
AND "CompanyID" = 490 and "ClientID" = 11125
我在想这样的事情:
DELETE FROM "ProjectMaster"
WHERE "CompanyID" = 490 and "ClientID" = 11125 AND
"ProjectMasterID" < (SELECT MAX(pm2."ProjectMasterID"
FROM "ProjectMaster" pm2
WHERE pm2."CompanyID" = "ProjectMaster"."CompanyID" AND
pm2."ClientID" = "ProjectMaster"."ClientID"
);
也就是说,相关性是针对公司和客户的,而不是所谓的参与度。这是基于我对你问题标题的解读。
当我 运行 你在 fiddle 中的查询时,它给了我:
error: relation "ProjectMaster" does not exist
这里有一些可以避免此错误的更改,而不改变逻辑(您实际上没有解释):
- 别名插入到 (
ua1
) 的 table
- 在最后一行的字段前加上它们所属的 table(
ua1
或 ua2
?)
- 摆脱这些嘈杂的报价
这 运行 没有语法错误:
DELETE FROM ProjectMaster ua1
USING ProjectMaster ua2
WHERE
ua1.EngagementName = ua2.EngagementName
AND ua1.ClientID = ua2.ClientID
AND ua1.ProjectMasterID < ua2.ProjectMasterID
AND ua1.CompanyID = 490 and ua1.ClientID = 11125;
我无法使用以下查询。如果我删除查询的最后一行,它将起作用。非常感谢任何建议。
DELETE FROM "ProjectMaster"
USING "ProjectMaster" ua2
WHERE "ProjectMaster"."EngagementName" = ua2."EngagementName"
AND "ProjectMaster"."ProjectMasterID" < ua2."ProjectMasterID"
AND "CompanyID" = 490 and "ClientID" = 11125
我在想这样的事情:
DELETE FROM "ProjectMaster"
WHERE "CompanyID" = 490 and "ClientID" = 11125 AND
"ProjectMasterID" < (SELECT MAX(pm2."ProjectMasterID"
FROM "ProjectMaster" pm2
WHERE pm2."CompanyID" = "ProjectMaster"."CompanyID" AND
pm2."ClientID" = "ProjectMaster"."ClientID"
);
也就是说,相关性是针对公司和客户的,而不是所谓的参与度。这是基于我对你问题标题的解读。
当我 运行 你在 fiddle 中的查询时,它给了我:
error: relation "ProjectMaster" does not exist
这里有一些可以避免此错误的更改,而不改变逻辑(您实际上没有解释):
- 别名插入到 (
ua1
) 的 table
- 在最后一行的字段前加上它们所属的 table(
ua1
或ua2
?) - 摆脱这些嘈杂的报价
这 运行 没有语法错误:
DELETE FROM ProjectMaster ua1
USING ProjectMaster ua2
WHERE
ua1.EngagementName = ua2.EngagementName
AND ua1.ClientID = ua2.ClientID
AND ua1.ProjectMasterID < ua2.ProjectMasterID
AND ua1.CompanyID = 490 and ua1.ClientID = 11125;