![]() |
1
3
通过组合3个数字和日期来创建散列值的危险在于它可能不唯一,因此不能安全地用作主键。 相反,我建议对主键使用自动递增的i d。 |
![]() |
2
3
只需创建代理项密钥:
或者:
后者使用
更新:
如果您需要创建相同的
请注意,表最多只能有一行是相同的(也就是说,表中有相同数量的行和相同的数据)。
对于你的问题,你不需要
如果您只想选择
这将返回中存在的所有记录
注意,如果有的话,它会缩小所有的副本。 |
![]() |
3
1
假设您已经确保了唯一性……您可以在SQL中做几乎相同的事情。唯一的问题是将日期转换为数值,以便可以对其进行哈希。
上面的查询适用于sql server,而oracle的唯一区别在于如何处理日期转换。此外,在sql server中还有其他转换日期的函数,因此这绝不是唯一的解决方案。 而且,您可以将它与Quassnoi的SET语句组合起来填充新字段。只需对值使用连接条件逻辑的左侧。 |
![]() |
4
1
如果使用旧表中的值加载新表,然后需要加入两个表,则只能“适当”地执行此操作,如果您可以唯一标识原始表中的每一行。Quassnoi的解决方案将允许您这样做,如果您可以首先通过添加一个新列来更改旧表。 如果无法更改原始表,则基于旧表的列生成某种形式的哈希代码将起作用——但是,同样,仅当哈希代码唯一标识每一行时。(甲骨文有校验和函数,对吧?如果是,请使用它们。) 如果无法保证散列代码的唯一性,则可能需要使用由多个列组成的主键来确保唯一性(例如,自然键)。如果没有自然键,我听说oracle为每一行数据提供了rownum,你能用它吗? |
|
Johnny T · 基于当前值的SQL合并表[重复] 6 月前 |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 6 月前 |
![]() |
ojek · 如何对SQL结果进行分组和编号? 6 月前 |
![]() |
senek · 如何在PL/SQL中将选择结果(列)放入数组中 6 月前 |
![]() |
Sax · 规范化Google表格(第一步) 6 月前 |
![]() |
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 6 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 7 月前 |