我需要使用聚合函数进行自我连接,在开始时我使用了一段时间来执行此操作,但性能非常糟糕,所以我更喜欢交叉连接,即使现在我的性能也很高。
create function dbo.get_max_maket_mapping_unique_id (@market_cat_id int)
returns @val table (uni_id int)
as
begin
insert into @val
select max(isnull(unique_id,0))+1
from maket_mapping_unique_four
where market_cat_id = @market_cat_id
return
end
update t1
set t1.unique_id = uni_id
from
maket_mapping_unique_four t1
cross apply dbo.get_max_maket_mapping_unique_id (t1.market_cat_id) c
答案 0 :(得分:0)
如果我理解正确,您需要每个“市场猫”的序列号。如果是这样,那么只需使用窗口函数:
with toupdate as (
select muf.*,
row_number() over (partition by market_cat_id order by (select null)) as seqnum
from maket_mapping_unique_four muf
)
update toupdate
set unique_id = seqnum;