【问题标题】:How to transform SQL table of data into table of pointers?如何将 SQL 数据表转换为指针表?
【发布时间】:2009-05-24 16:32:53
【问题描述】:

假设我有一个元组(id、姓氏、名字、职业)的 SQL 表,其中所有值都是字符串(好吧,显然 id 是一个键)。

我想将它转换为带有元组(id、lastid、firstid、occupid)的表,我只保留指向包含实际值的其他表的指针。如果示例域名和职业不适合此操作,我深表歉意。

显然,要创建将保存数据的其他表,我需要获取所有唯一的姓氏,然后使用自动生成的键将它们插入到新表中。名字和职业也是如此。

完成后,是否有一个单一的转换可以生成包含指针(呃,外键)的新表?

如果重要,实现使用 SQLite。

【问题讨论】:

  • 你想用这个来完成什么?数据中有很多重复吗?整个方法对我来说似乎有点奇怪......
  • 同意,这听起来确实像是基础数据中非常糟糕的标准化......
  • 是的,原始数据中有很多重复。想想数百万行,只有数千(甚至数万)不同的值。我将首先指出,上面选择的示例域不是立即适用的......

标签: sql sqlite rdbms


【解决方案1】:

假设您的姓/名和职业表是 Lnt、Fnt 和 Occ,每个表只有两列,一个 id 字段和一个值:

REPLACE INTO TheTable (last, first, occup)
SELECT Lnt.id, Fnt.id, Occ.id
FROM TheTable
JOIN Lnt ON (last=Lnt.value)
JOIN Fnt ON (first=Fnt.value)
JOIN Occ ON (occup=Occ.value)

【讨论】:

    猜你喜欢
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2011-04-22
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多