【问题标题】:Static unique identifier/column in SQL viewSQL 视图中的静态唯一标识符/列
【发布时间】:2021-01-05 12:00:23
【问题描述】:

我正在尝试将静态唯一值列添加到视图中,该列保留其位置并且在调用视图时不会更改。

这个想法是在视图中有一个唯一标识符,我知道我们可以使用连接表的主键之一作为唯一标识符,但在我的情况下,该主键列存在重复值,因为它与多个表连接。

我尝试了 Rand()NEWID()ABS(CHECKSUM(NEWID())),它们确实起到了作用,但没有完全地。 每当调用视图时,它们都有不同的唯一值,我需要一个唯一值来表示一行,并且在调用视图时不会改变。

期待有用的回复。

问候, 阿里·纳瓦兹

【问题讨论】:

  • 您可以连接(或以其他方式使用)所涉及的所有表的所有 PK 值 - 这是合乎逻辑的方法。 “一列”(单数)的想法闻起来像 XY problem
  • 我建议您改进您的问题,添加一些示例,一些代码并使其更清晰,并添加您的源代码,看看这里 => How to create a Minimal, Reproducible Example
  • 根据定义,必须至少有一列具有主键,否则您会不必要地复制数据

标签: sql sql-server view primary-key uniqueidentifier


【解决方案1】:

我不确定您所说的“保持其位置并且在调用视图时不会改变”是什么意思,因为基础数据可能会改变。

但是,如果您有一组唯一定义每一行的列,那么row_number() 应该做您想做的事情:

row_number() over (order by col1, col2, col3)

列唯一标识每一行是很重要的。通常,这些是基础表的主键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    相关资源
    最近更新 更多