postgresql - 将具有重复项的表拆分为 2 个标准化表?

标签 postgresql duplicates normalization

我有一个包含一些重复行的表,我想将其标准化为 2 个表。

user | url | keyword
-----|-----|--------
fred | foo | kw1
fred | bar | kw1
sam  | blah| kw2

我想首先将其规范化为两个表(user 和 url_keyword)。是否可以运行一个查询来规范化它,或者我是否需要使用脚本循环遍历表来构建表?

最佳答案

你可以通过一些查询来完成它,但我对 postgreSQL 不熟悉。首先创建一个用户表,其中包含一个标识列。还将列 userID 添加到现有表中:

然后是这样的:

INSERT INTO users (userName)
    SELECT DISTINCT user FROM url_keyword

UPDATE url_keyword
    SET userID=(SELECT ID FROM users WHERE userName=user)

然后您可以删除旧的用户列,创建外键约束等。

关于postgresql - 将具有重复项的表拆分为 2 个标准化表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1310103/

相关文章:

sql - 选择行数,按 PostgreSQL 中时间间隔的动态范围排序

postgresql - BDR 对于生产 Postgres 同步有多好?

java - HashMap ,删除重复项,但也存储原始出现的数量。 java

MySQL 根据另一个表中同一行的另一个字段值的重复出现来更新 bool 字段值

mysql - 有一个列 'number_of_likes' 或者有一个单独的列...?

mongodb - 从项目 user_id 获取所有用户名? (MongoDB 查询)

mySQL将同一列中的两个值相除

sql - 如何将这两个 PostgreSQL 语句合并为一个用于 Rails 3 应用程序?

SQL:选择不同值是另一个表的不同值的子集的行

mysql - 删除mysql重复条目并使用基于时间戳的最新条目