基于列计数的SQL增量
所以我有一个表(Org_Contacts),它将联系人表链接到一个组织 该表当前的设置如下所示:基于列计数的SQL增量,sql,Sql,所以我有一个表(Org_Contacts),它将联系人表链接到一个组织 该表当前的设置如下所示: Organization ID (int) Contact ID (int) Priority (int) 一个组织可能有多个联系人,我希望在中插入联系人,并根据分配给组织的联系人数量增加该联系人的优先级 例如,我有两个组织,ABC(ID:90)和XYZ(ID:91) 我有这两个组织的5个联系人。 约翰(身份证号码:10), 简(身份证号码:11), 史蒂夫(身份证号码:12), 鲍勃(身份证号码
Organization ID (int)
Contact ID (int)
Priority (int)
一个组织可能有多个联系人,我希望在中插入联系人,并根据分配给组织的联系人数量增加该联系人的优先级
例如,我有两个组织,ABC(ID:90)和XYZ(ID:91)
我有这两个组织的5个联系人。
约翰(身份证号码:10),
简(身份证号码:11),
史蒂夫(身份证号码:12),
鲍勃(身份证号码:13),
詹妮弗(身份证号码:14)
当我将John作为联系人添加到ABC时,我希望优先级从1开始
Org_Contacts
------------
90|10|1
接下来,我将把Jane添加到与联系人相同的组织中,使她的优先级为2
Org_Contacts
------------
90|10|1
90|11|2
之后,将添加Steve,但他将是XYZ的联系人
Org_Contacts
------------
90|10|1
90|11|2
91|12|1
鲍勃将是下一个,并将被添加到ABC
Org_Contacts
------------
90|10|1
90|11|2
91|12|1
90|13|3
最后是詹妮弗到XYZ
Org_Contacts
------------
90|10|1
90|11|2
91|12|1
90|13|3
91|14|2
我试图在insert语句中完成所有这一切。我想可能是一个使用计数的子查询,但我不确定最佳方法。与其在表中保持优先级,不如使用ROW\u NUMBER动态计算它(您没有指定DBMS,但大多数支持它):
select
Organization,
Contact,
ROW_NUMBER()
OVER (PARTITION BY Organization
ORDER BY Contact) AS Priority
from tab