1

我有一张看起来像这样的桌子

Seq ID | Uid | Type | URL

对于每个给定类型,Uid我可以有多个Urls,例如

Uid 123可以有5 video urls6 image type urls

我想为每个组合插入自动递增的 seq id,Uid因此Type在前面的示例中,seq idofuid 123和 type video 将1,2,3,4,5适用于 eachvideo url1,2,3,4,5,6each image type url,并且对于所有其他uidtype组合都相同。

4

2 回答 2

4

我会避免尝试将这种人工构造存储在数据库中。如果需要,可以在查询时生成:

SELECT Uid, Type, URL,
       ROW_NUMBER() OVER(PARTITION BY Uid, Type ORDER BY URL) AS SeqID
    FROM YourTable
于 2012-10-02T21:29:30.820 回答
0

您可以在查询中执行此操作吗?

select row_number() over (partition by uid, type order by url) as seqID, . . .
from table

您也可以在更新中执行此操作,以进行事后更新:

with toupdate as (
     select row_number() over (partition by uid, type order by url) as newseqID, . . .
     from table
)
update toudpate
    set seqID as newseqID

如果您想将其作为插入的一部分,您需要创建一个触发器来维护列值。

于 2012-10-02T21:29:39.663 回答