SQL 视图中的静态唯一 identifier/column
Static unique identifier/column in SQL view
我正在尝试将静态唯一值列添加到视图中,该列保留其位置并且在调用视图时不会更改。
想法是在视图中有一个唯一标识符,我知道我们可以使用连接表的主键之一作为唯一标识符,但在我的情况下,该主键有重复键列值,因为它与多个表连接。
我尝试了 Rand()、NEWID()、ABS(CHECKSUM(NEWID())) 他们确实达到了目的,但并不完全。
每当调用视图时,它们都有不同的唯一值,我需要一个唯一值来表示一行,并且在调用视图时不会更改。
期待有用的回复。
此致,
阿里·纳瓦兹
我不确定您所说的“在调用视图时保留其位置并且不会更改”是什么意思,因为基础数据可能会更改。
但是,如果您有一组唯一定义每一行的列,那么 row_number()
应该可以满足您的要求:
row_number() over (order by col1, col2, col3)
列唯一标识每一行很重要。通常,这些将是基础表的主键。
我正在尝试将静态唯一值列添加到视图中,该列保留其位置并且在调用视图时不会更改。
想法是在视图中有一个唯一标识符,我知道我们可以使用连接表的主键之一作为唯一标识符,但在我的情况下,该主键有重复键列值,因为它与多个表连接。
我尝试了 Rand()、NEWID()、ABS(CHECKSUM(NEWID())) 他们确实达到了目的,但并不完全。 每当调用视图时,它们都有不同的唯一值,我需要一个唯一值来表示一行,并且在调用视图时不会更改。
期待有用的回复。
此致, 阿里·纳瓦兹
我不确定您所说的“在调用视图时保留其位置并且不会更改”是什么意思,因为基础数据可能会更改。
但是,如果您有一组唯一定义每一行的列,那么 row_number()
应该可以满足您的要求:
row_number() over (order by col1, col2, col3)
列唯一标识每一行很重要。通常,这些将是基础表的主键。