postgresql - 如何在 postgresql 中删除每个用户的一条重复记录
问题描述
如何删除记录并让每个用户拥有一个唯一记录。这意味着可能有多个相同的记录,但由不同的用户记录。一个用户不能有多个相同的记录。
例如,如果用户 1 搜索蜘蛛侠电影,那么这是一个唯一的记录,但如果他们再次搜索蜘蛛侠同名没有区别,则删除第二个记录。现在,如果用户 2 搜索相同的蜘蛛侠电影,则保留该记录,因为用户 2 的用户 id 与用户 1 不同,依此类推。
我的问题是如何删除用户记录并为每个用户只保留一个唯一记录。
我正在使用两个不同的表来跟踪用户并将它们与电影表匹配
我想删除用户表和电影表中用户不唯一的电影。
这是我的桌子
https://i.stack.imgur.com/yrc97.png
DELETE FROM movie_media t1
USING accountMovie t2
WHERE id IN
(SELECT id
FROM
(SELECT id,
ROW_NUMBER() OVER( PARTITION BY title
ORDER BY id) AS row_num
FROM movie_media ) t
WHERE t.row_num > 1)
AND t2."accountId" = $1
我正在寻找这样的东西我知道代码将无法工作我试图传达我对我正在寻找什么的一般想法
解决方案
您要做的第一件事是在插入重复记录之前检查它们。我在代码级别执行此操作,但您也可以在数据库级别执行此操作。一盎司的预防胜过一磅的治疗!
如果我正确理解您的表格,您应该可以使用它来删除重复的行:
DELETE FROM movie
WHERE id IN
(SELECT id
FROM
(SELECT id,
ROW_NUMBER() OVER( PARTITION BY id,
mediaId
ORDER BY id ) AS row_num
FROM movie ) t
WHERE t.row_num > 1 );
推荐阅读
- laravel - Laravel Google Compute Engine - 排队的作业不起作用
- azure-pipelines - Azure Build Pipelines - 作业以随机顺序运行
- c# - 使用边框上的子控件调整无边框 WinForm 的大小
- sql - 从sql server中的字符串中提取所有十进制值
- python - 将 Cython 头文件导入 C 代码并用 Xcode 编译
- azure - 导入状态返回消息而不是状态
- r - R匹配来自不同列表的变量
- visual-studio - 无法在 Visual Studio 中打开 DevExpress 8.2 版的设计器
- testing - Selector 的 Testcafe .parent() 在超时前偶尔会失败
- python - 将列表与列表中的多个列表进行比较