sql - 删除表 PostgreSQL 中的重复条目
问题描述
如果用户喜欢另一个用户,我尝试创建一个 pg/plsql 脚本来删除 TABLE 中的双重条目并在另一行中报告,这是代码:
\timing on
DO $$
BEGIN
DECLARE
i INT := 1;
maxID INT;
BEGIN
CREATE TEMP TABLE query ("id" SERIAL, "idUser1" INT, "idUser2" INT, "favorite" BOOLEAN);
INSERT INTO query FROM "WU_MatchingUsers" WHERE "id" IN (SELECT "id" FROM (SELECT "id", ROW_NUMBER() OVER( PARTITION BY "IDWU_User1", "IDWU_User2" ORDER BY "id" DESC) AS row_num FROM "WU_MatchingUsers") t WHERE t.row_num >1), "UserAFavoriteTag";
SELECT INTO maxID MAX("id") FROM query;
WHILE i < maxID LOOP
IF SELECT "favorite" FROM query WHERE "id" = i; THEN
SELECT * FROM "WU_MatchingUsers" WHERE "id" IN (SELECT "id" FROM (SELECT "id", ROW_NUMBER() OVER( PARTITION BY "IDWU_User1", "IDWU_User2" ORDER BY "id" DESC) AS row_num FROM "WU_MatchingUsers") t WHERE t.row_num >1) WHERE "IDWU_User1" = SELECT "idUser1" FROM query AND "IDWU_User2" = SELECT "idUser2" FROM query;
ELSE
RAISE NOTICE "Not IF";
END IF;
DELETE FROM "WU_MatchingUsers" WHERE "id" IN (SELECT "id" FROM (SELECT "id", ROW_NUMBER() OVER( PARTITION BY "IDWU_User1", "IDWU_User2" ORDER BY "id" DESC) AS row_num FROM "WU_MatchingUsers") t WHERE t.row_num >1), "UserAFavoriteTag";
END;
END $$;
\timing off
这是 psql 返回的错误:
psql:duplicateDeleter.sql:22: ERREUR: erreur de syntaxe sur ou près de « FROM »
LIGNE 9 : INSERT INTO query FROM "WU_MatchingUsers" WHERE "id"...
解决方案
推荐阅读
- ios - Chrome Devtools 远程 IOS 调试网络域未找到
- node.js - Sequelize models - 在 Node 中同步时设置关联
- powershell - PowerShell 如何检查您是否被允许连接到特定计算机
- c++ - 你可以用 C++ 中的 Enum 类替换 Typename 吗?
- javascript - 如何通过 React-leaflet 使用纬度和经度设置新位置的地图视图
- node.js - 如何从 [PROJECT B] 云函数(触发器)调用 [PROJECT A] 云函数?
- visual-studio - 如何在结果面板中更改 Visual Studio Code 中的文本颜色?
- javascript - 无法读取未定义的属性“caseSensitive”
- node.js - MongoDB:如何使用聚合管道中上一次匹配的结果(ObjectIds 数组)执行第二次匹配
- ios - 我可以延长用户当前的自动更新订阅到期日期吗