我有一张看起来像这样的表
Seq ID | Uid | Type | URL
每个Uid
的对于任何给定类型,我可以有多个Urls
,例如
Uid 123
可以有5 video urls
和6 image type urls
我想为Uid
和Type
的每个组合插入自动递增的seq id,因此在前面的示例中,id
的seq uid 123
和类型视频将转到{对于每个1,2,3,4,5
,每个video url
和1,2,3,4,5,6
都有{1}},所有其他image type url
和uid
组合都相同。
答案 0 :(得分:4)
我不会试图在数据库中存储这种人工构造。如果需要,可以在查询时生成:
SELECT Uid, Type, URL,
ROW_NUMBER() OVER(PARTITION BY Uid, Type ORDER BY URL) AS SeqID
FROM YourTable
答案 1 :(得分: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
如果要将其作为插入的一部分,则需要创建一个触发器来维护列值。