首页 > 数据库 >刚写完的一个用户遍历更新的SQL存储过程,分享一下吧

刚写完的一个用户遍历更新的SQL存储过程,分享一下吧

时间:2022-12-01 16:02:03浏览次数:37  
标签:遍历 dbo -- userid WHEN buyerrankvalue sellerrankvalue SQL 刚写

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go



/*
 填充用户评价等级
*/
ALTER PROC [dbo].[Fill_Userinfos_BuyerRank_SellerRank]
@userid VARCHAR(12) = NULL
AS
BEGIN
DECLARE @rankCount INT
SET @rankCount = 0
DECLARE cursor1 CURSOR
FOR
SELECT a.UserID
FROM C2CEDU.dbo.UserInfos a
INNER JOIN dbo.UserBases b ON a.UserID = b.UserID
WHERE b.Status <> 400
OPEN cursor1
FETCH NEXT FROM cursor1 INTO @userid
WHILE @@fetch_status = 0 --判断是否成功获取数据
BEGIN
-- 更新用户作为买家等级 更新卖家等级
DECLARE @sellerrankvalue INT
SELECT @sellerrankvalue = ISNULL(SUM(rankvalue), 0)
FROM [C2CEDU].[dbo].[UserRankRecords]
WHERE RankType = 1
AND ToUserID = @userid

DECLARE @buyerrankvalue INT
SELECT @buyerrankvalue = ISNULL(SUM(rankvalue), 0)
FROM [C2CEDU].[dbo].[UserRankRecords]
WHERE RankType = 0
AND ToUserID = @userid

UPDATE dbo.UserInfos
SET BuyerRank = ( SELECT ISNULL(SUM(rankvalue), 0)
FROM [C2CEDU].[dbo].[UserRankRecords]
WHERE RankType = 0
AND ToUserID = @userid
) ,
SellerRank = ( SELECT ISNULL(SUM(rankvalue), 0)
FROM [C2CEDU].[dbo].[UserRankRecords]
WHERE RankType = 1
AND ToUserID = @userid
) ,
BuyerRankInfoID = CASE WHEN @buyerrankvalue >= 0
AND @buyerrankvalue <= 3
THEN 41 --0级
WHEN @buyerrankvalue > 3
AND @buyerrankvalue <= 10
THEN 1 --1级
WHEN @buyerrankvalue > 10
AND @buyerrankvalue <= 40
THEN 3 --2级
WHEN @buyerrankvalue > 40
AND @buyerrankvalue <= 90
THEN 5 --3级
WHEN @buyerrankvalue > 90
AND @buyerrankvalue <= 150
THEN 7 --4级
WHEN @buyerrankvalue > 150
AND @buyerrankvalue <= 250
THEN 9 --5级
WHEN @buyerrankvalue > 250
AND @buyerrankvalue <= 500
THEN 11--6级
WHEN @buyerrankvalue > 500
AND @buyerrankvalue <= 1000
THEN 13 --7级
WHEN @buyerrankvalue > 1000
AND @buyerrankvalue <= 2000
THEN 15 --8级
WHEN @buyerrankvalue > 2000
AND @buyerrankvalue <= 5000
THEN 17 --9级
WHEN @buyerrankvalue > 5000
AND @buyerrankvalue <= 10000
THEN 19--10级
WHEN @buyerrankvalue > 10000
AND @buyerrankvalue <= 20000
THEN 21 --11级
WHEN @buyerrankvalue > 20000
AND @buyerrankvalue <= 50000
THEN 23 --12级
WHEN @buyerrankvalue > 50000
AND @buyerrankvalue <= 100000
THEN 25 --13级
WHEN @buyerrankvalue > 100000
AND @buyerrankvalue <= 200000
THEN 27--14级
WHEN @buyerrankvalue > 200000
AND @buyerrankvalue <= 500000
THEN 29 --15级
WHEN @buyerrankvalue > 500000
AND @buyerrankvalue <= 1000000
THEN 31 --16级
WHEN @buyerrankvalue > 1000000
AND @buyerrankvalue <= 2000000
THEN 33 --17级
WHEN @buyerrankvalue > 2000000
AND @buyerrankvalue <= 5000000
THEN 35 --18级
WHEN @buyerrankvalue > 5000000
AND @buyerrankvalue <= 10000000
THEN 37--19级
WHEN @buyerrankvalue > 10000000
AND @buyerrankvalue <= 100000000
THEN 39 --20级
END ,
SellerRankInfoID = CASE WHEN @sellerrankvalue >= 0
AND @sellerrankvalue <= 3
THEN 42 --0级
WHEN @sellerrankvalue > 3
AND @sellerrankvalue <= 10
THEN 2 --1级
WHEN @sellerrankvalue > 10
AND @sellerrankvalue <= 40
THEN 4 --2级
WHEN @sellerrankvalue > 40
AND @sellerrankvalue <= 90
THEN 6 --3级
WHEN @sellerrankvalue > 90
AND @sellerrankvalue <= 150
THEN 8 --4级
WHEN @sellerrankvalue > 150
AND @sellerrankvalue <= 250
THEN 10 --5级
WHEN @sellerrankvalue > 250
AND @sellerrankvalue <= 500
THEN 12--6级
WHEN @sellerrankvalue > 500
AND @sellerrankvalue <= 1000
THEN 14 --7级
WHEN @sellerrankvalue > 1000
AND @sellerrankvalue <= 2000
THEN 16 --8级
WHEN @sellerrankvalue > 2000
AND @sellerrankvalue <= 5000
THEN 18 --9级
WHEN @sellerrankvalue > 5000
AND @sellerrankvalue <= 10000
THEN 20--10级
WHEN @sellerrankvalue > 10000
AND @sellerrankvalue <= 20000
THEN 22 --11级
WHEN @sellerrankvalue > 20000
AND @sellerrankvalue <= 50000
THEN 24 --12级
WHEN @sellerrankvalue > 50000
AND @sellerrankvalue <= 100000
THEN 26 --13级
WHEN @sellerrankvalue > 100000
AND @sellerrankvalue <= 200000
THEN 28--14级
WHEN @sellerrankvalue > 200000
AND @sellerrankvalue <= 500000
THEN 30 --15级
WHEN @sellerrankvalue > 500000
AND @sellerrankvalue <= 1000000
THEN 32 --16级
WHEN @sellerrankvalue > 1000000
AND @sellerrankvalue <= 2000000
THEN 34 --17级
WHEN @sellerrankvalue > 2000000
AND @sellerrankvalue <= 5000000
THEN 36 --18级
WHEN @sellerrankvalue > 5000000
AND @sellerrankvalue <= 10000000
THEN 38--19级
WHEN @sellerrankvalue > 10000000
AND @sellerrankvalue <= 100000000
THEN 40 --20级
END
WHERE UserID = @userid
END


FETCH NEXT FROM cursor1 INTO @userid

CLOSE cursor1
DEALLOCATE cursor1
END

作者:仓储大叔,张占岭,
荣誉:微软MVP

标签:遍历,dbo,--,userid,WHEN,buyerrankvalue,sellerrankvalue,SQL,刚写
From: https://blog.51cto.com/u_15765017/5902312

相关文章

  • SQL Server 无法创建索引并且显示灰色
    一、问题描述:选择要创建的表,点击右键,会弹出属性菜单,但是“新建索引”显示灰色,无法进行创建,有些表是可以创建,如下图: 那么为什么会出现这样的原因呢?网上有的人说数据库有问题......
  • MYSQL IN 是否走索引?
    准备工作CREATETABLEt(idINTNOTNULLAUTO_INCREMENT,key1VARCHAR(100),common_fieldVARCHAR(100),PRIMARYKEY(id),KEYidx_key1(ke......
  • MySQL 间隙锁导致的死锁场景分析
    实际业务场景在我们使用mysql的时候,如果不注意间隙锁容易引起死锁,最近分析一个业务场景就是间隙锁导致的死锁,业务抽象如下:系统有一个批量新增业务资源的功能,实现逻辑如下......
  • MySQL数据库-数据完整性-笔记
    数据完整性一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证......
  • sql server 多字段查询重复记录并删除
    --查询重复的记录SELECTa.*FROMContacta,(SELECTCust_ID,Contact_NameFROMContactGROUPBYCust_ID,Contact_NameHAVINGCOUNT(1)>1)ASbWHEREa.Cust_ID=b.Cust_I......
  • MongoDB和mysql的区别
    一.什么是MongoDBMongoDB是一个基于分布式文件存储的数据库。由C++语言编写,是一个开源数据库系统。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一......
  • MySQL数据库-安装-笔记
    1.服务器端安装安装服务器端:在终端中输入如下命令,回车后,然后按照提示输入sudoapt-getinstallmysql-server当前使用的ubuntu镜像中已经安装好了mysql服务器端,无需再安装,并......
  • MySQL数据库-Navicat图形界面工具操作-笔记
    1.Navicat连接打开navicat,点击工具栏的“连接”,选择“mysql”,弹出窗口如下图在弹出的窗口中填写名称、主机ip、端口、用户名、密码,如下图密码为mysql点击确定,在左侧栏会看到......
  • Mysql昨天,上个月条件查询
    1.查询昨日数据SELECT*FROMtestWHEREDATEDIFF(DATE_FORMAT(NOW(),'%Y%m%d'),DATE_FORMAT(created_time,'%Y%m%d'))=12.查询上月数据SELECT*FROMtestWHERE......
  • MYSQL 全文检索
    项目中有个日志表需,需求要对日志内容做模糊匹配,但是考虑到数据量会比较大,用like性能不高。查了一下可以用MYSQL自带的全文检索,并且小测试了一下。创建全文检索字段,只有cha......