Sql 具有序列号的列
插入后,表格值为Sql 具有序列号的列,sql,duplicates,db2,unique,sequence,Sql,Duplicates,Db2,Unique,Sequence,插入后,表格值为 create table Account(A_number number, B_number number, C_number, A_number_mask number as GENERATED ALWAYS AS IDENTITY, B_number_mask number, C_number_mask ) 现在我必须填充 B_编号\u用于B_编号的掩码 C_编号\u C编号的掩码 当我屏蔽或创建序列时,新列也应该为父列中的重复值具有重复值 输出应如下所示: A
create table Account(A_number number, B_number number, C_number, A_number_mask number as
GENERATED ALWAYS AS IDENTITY, B_number_mask number, C_number_mask )
现在我必须填充
- B_编号\u用于B_编号的掩码
- C_编号\u C编号的掩码
A_number B_number C_number A_mask_number B_mask C_mask
10 100 200 1 NULL NULL
20 100 200 2 NULL NULL
30 101 201 3 NULL NULL
40 102 202 4 NULL NULL
50 103 203 5 NULL NULL
60 101 201 6 NULL NULL
我必须将序列列提供给用户,而不是父列。
请随意使用序列的起始编号。使用
行编号创建序列
A_number B_number C_number A_mask_number B_mask C_mask
10 100 200 1 1 1000
20 100 200 2 1 1000
30 101 201 3 2 2000
40 102 202 4 3 3000
50 103 203 5 4 4000
60 101 201 6 2 2000
插入数据时,可以使用标识列自动生成唯一编号
SELECT A_number,
B_number,
ROW_NUMBER() OVER(ORDER BY RAND()) as A_number_mask,
ROW_NUMBER() OVER(PARTITION BY B_number ORDER BY RAND()) as B_number_mask
FROM Account
只有两个选项可以显示可能性—一个是生成负数,另一个是使用未使用的序列。向我们展示如何创建第二个表以及如何填充我没有创建第二个表。我想把这个输出放在我的第二张桌子上。为了安全起见,我可以在创建第二个表时使用序列来显示\u编号\u掩码,而不是显示\u编号。但我不知道我应该用什么逻辑来确定B_掩码_编号,因为它有重复项。我需要一个基于B_编号的序列或唯一值,前提是我为重复的B_编号获得了相同的B_编号掩码。请说明您想要实现的目标。现在我不明白逻辑。英语是你的主要语言吗?因为如果你说“我有”的意思是已经完成了,而不是“我想要”或“我需要”meen你需要帮助谢谢你纠正我。英语不是我的主要语言,我正在尽力解释我的要求。对于A_数和B_数,我想创建一个随机唯一数。这样我就不必为了安全目的给公司提供实际价值。我可以使用序列为一个_编号创建唯一编号。但B_数有重复的值,如果我使用序列,我会得到不同的值,相同的B_数值,我不想要。因此,如果有任何其他方法来实现SQL的要求,请指导我。我们下次尝试使用谷歌翻译。我们在其他语言中也有,这可能会有所帮助。但我会再次尝试回答你的问题,因为我的需求需要不同系列的数字。我们的数据有一个10000000002000000000的序列号,以此类推。但它没有5000000000系列。所以在我的序列中,我将使用这个序列来获得唯一的值。同样的,我们没有一个700000000系列的B_编号。我必须使用此系列来获取基于B_编号的唯一编号。请尝试使用行编号。可以尝试此聚合按兰德排序()
很好,因为它可以帮助您隐藏行之间的关系。但如果表太大,可能会导致性能问题。所以要考虑到这一点。一个表只能有一个用IDENTITY属性定义的列。这里的B_数不是唯一的。应根据B_编号创建B_编号屏蔽,并应给出重复B_编号的重复序列号。例如,如果B_编号为1、2、3、3、4,则B_掩码_编号应为700、701、702、702、702、703。我不想用算术运算。如果有任何其他方法可以实现这一点,请告诉meSorry true-但是您可以定义一个序列,而不是第二个标识列
create table Account_New(A_number number,
B_number number,
A_number_mask BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH -1, INCREMENT BY -1)
B_number_mask BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 7000000000, INCREMENT BY 1)
)