基于列计数的SQL增量

基于列计数的SQL增量,sql,Sql,所以我有一个表(Org_Contacts),它将联系人表链接到一个组织 该表当前的设置如下所示: Organization ID (int) Contact ID (int) Priority (int) 一个组织可能有多个联系人,我希望在中插入联系人,并根据分配给组织的联系人数量增加该联系人的优先级 例如,我有两个组织,ABC(ID:90)和XYZ(ID:91) 我有这两个组织的5个联系人。 约翰(身份证号码:10), 简(身份证号码:11), 史蒂夫(身份证号码:12), 鲍勃(身份证号码

所以我有一个表(Org_Contacts),它将联系人表链接到一个组织

该表当前的设置如下所示:

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