SQL语句 对表按某几个字段分组,并生成组内记录数范围内的随机序号.

sql中随机分组后的随机排序 随机分组之后的随机排序,随机分组之后的随机排序,随机分组之后的随机排序 立即下载
CREATE TABLE gw_card
(
id 
INT IDENTITY(1,1),
address 
VARCHAR(100),
subjecth 
INT,
subject 
VARCHAR(10),
id_key 
VARCHAR(10)
)
INSERT gw_card SELECT 'aa',1,'xx',NULL
UNION ALL SELECT 'aa',1,'xx',NULL
UNION ALL SELECT 'bb',1,'xx',NULL
UNION ALL SELECT 'cc',1,'yy',NULL
UNION ALL SELECT 'bb',1,'xx',NULL
UNION ALL SELECT 'aa',1,'xx',NULL
UNION ALL SELECT 'aa',1,'xx',NULL
GO
--查看原始数据
SELECT * FROM gw_card
/*
1    aa    1    xx    NULL
2    aa    1    xx    NULL
3    bb    1    xx    NULL
4    cc    1    yy    NULL
5    bb    1    xx    NULL
6    aa    1    xx    NULL
7    aa    1    xx    NULL
*/

GO

--得到要生成的取机数的总数
DECLARE @n INT
SELECT @n=COUNT(*) FROM gw_card

SET ROWCOUNT @n

--创建生成随机数据的临时表
CREATE TABLE #(id INT IDENTITY,gid INT,x INT)

--按科目和地址分组,得到每组的记录数,及待分配的随机数值
INSERT #
    
SELECT DISTINCT gid,CAST(RAND(CHECKSUM(NEWID())) * cnt + 1 AS INT)
        
FROM sysobjects a
    
CROSS JOIN 
        (
SELECT CHECKSUM(address,subjecth,subject) gid,COUNT(*) cnt 
            
FROM gw_card
            
GROUP BY address,subjecth,subject
        ) b

SET ROWCOUNT 0

GO

--进行更新操作
UPDATE e SET e.id_key = RIGHT('0000000000' + RTRIM(x.x),10)
    
--SELECT e.*,RIGHT('0000000000' + RTRIM(x.x),10),CHECKSUM(address,subjecth,subject),gid,x.id,x
    FROM gw_card e
INNER JOIN # x
    
ON CHECKSUM(address,subjecth,subject)=gid
        
AND (SELECT COUNT(*) FROM #
            
WHERE gid = x.gid
                
AND id <= x.id
            )
=
            (
            
SELECT COUNT(*) FROM gw_card 
                
WHERE /*address = e.address
                    AND subjecth = e.subjecth
                    AND subject = e.subject
*/

                     CHECKSUM(address,subjecth,subject)
=CHECKSUM(e.address,e.subjecth,e.subject)
                    
AND id<=e.id)
/*这个地方,楼主还连的有其它表, 因为它们不影响分配id_key的值,所以我也就没有建相应的测试表及测试数据,楼主可以自行加上*/

GO

--按地址及科目分组顺序 查看更改后的id_key值.可以看到同一组的id_card已获得更新,并且值在每组个数的范围内随机分配,且不重复
SELECT * FROM gw_card
    
ORDER BY address,subjecth,subject,id
/*
1    aa    1    xx    0000000004
2    aa    1    xx    0000000001
6    aa    1    xx    0000000003
7    aa    1    xx    0000000002
3    bb    1    xx    0000000002
5    bb    1    xx    0000000001
4    cc    1    yy    0000000001
*/


GO

DROP TABLE #,gw_card
GO
 
FPGA原理与结构(3)——存储单元(Storage Elements) 触发器,锁存器,寄存器,为什么xilinx推荐高电平复位,为什么latch依然存在,FPGA中的触发器与锁存器 阅读详情

相关推荐

避坑指南:Quectel EC200A-CN在OpenWrt或嵌入式Linux下的RNDIS/ECM网络配置全解析

本文详细解析了Quectel EC200A-CN模块在OpenWrt或嵌入式Linux下的RNDIS/ECM网络配置,包括模式选择、内核配置、动态切换AT指令、网络接口生成与排错、路由与防火墙设置、性能调优及特殊场景应对策略,帮助开发者避免常见配置陷阱,提升网络稳定性和效率。

weixin_42531588的博客 288

SQL随机分组与随机平均分组----ntile(组数) over(partition by 字段1 order by 字段2)

今天发现一个函数,ntile 直接看代码吧 select t.classno ,t.sno,t.score ntile(5) over(partition by classno order by t.sno) as ntile from t_score t order by ntile 意思:根据 classno 分组后再进行每个相同classno的集合尽量地平均分5组。 例如:一

肥货 1万+

Python控制tek示波器(1)

如何使用Python来控制tek示波器

m0_47441496的博客 3379

SQL分组获取随机记录

主要是利用row_number() over()函数以及DBMS_RANDOM.value产生的随机数大小排序进行,再对固定的排序序号进行统一取值, select id, empno , row_number() over(partition by empno order by DBMS_RANDOM.value) as row_num from emp t;

肥货 4431

LLC混合滞回控制 vs 电压模/电流模:UCC25640x仿真对比与选型指南

在开关电源设计中,LLC谐振变换器的环路补偿是核心难点。传统电压模控制(VMC)和电流模控制(CMC)在LLC拓扑上存在环路增益漂移、动态响应慢等局限。混合滞回控制通过滞回比较器直接调制开关频率,并融合输出电压与谐振腔电流信息,实现了自适应环路增益和快速瞬态响应。该技术显著提升轻载效率与动态性能,适用于高密度适配器、快充及车载充电机等场景。本文基于UCC25640x系列,通过仿真对比三种控制策略,为工程选型与调试提供实践参考。

weixin_33925615的博客 335

微软登录OAuth 2.0授权流程

OAuth 2.0是一个关于授权的开放网络标准,它允许第三方应用获取用户数据,是目前最流行的授权机制。微软身份平台支持OAuth 2.0授权码流程,使得客户端应用程序能够获得对受保护资源(如网络API)的授权访问。这一流程在保障用户数据安全的前提下,实现了应用的便捷登录与数据共享。当用户在一个支持OAuth 2.0的应用上,希望使用微软账号进行登录时,OAuth 2.0授权流程即被触发。

qq_36569837的博客 4091

SQL生成序号的四种方式

排名函数是SQL SERVER2005新增的函数。排名函数总共有四种,分别是:row_number、rank、 dense_rank 、ntile。row_number:顺序生成序号。rank:相同的序值序号相同,但序号会跳号。dense_rank :相同的序值序号相同,序号顺序递增。ntile:装桶,把记录分成指的桶数,编序号。下面分别介绍一下这四个排名函数的功能及用法。

u013938578的博客 1万+

【华为OD机试真题 2025C卷新题】855、识文断句 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025C卷新题】855、识文断句 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华为

KJ.JK 1851

Microsoft SQL Server 生成随机数字、字符串、日期、验证码以及 UUID

Microsoft SQL Server 生成随机数字、字符串、日期、验证码以及 UUID

weixin_44519342的博客 1307

诊断CAPL自动化(3)——封装了接收诊断数据的通用CAPL脚本函数库

DiagGetRespPrimitiveSize (获取诊断响应的单个数据) diagGetPrimitiveData (获取诊断返回的所有数据) DiagGetRespParameter(数值类型) DiagGetRespParameter(字符串类型) DiagGetRespParameter(byte数组)

蚂蚁小兵 6222

用Python爬取大连商品交易所期货实时行情:从入门到实战

python复制编辑# utils.py"豆粕": "M0","铁矿石": "I0","聚乙烯": "L0","玉米": "C0","聚丙烯": "PP0","棕榈油": "P0"本项目展示了:✅ 如何从新浪财经 API获取主力合约实时数据✅ 使用Python异步爬虫技术) 提升效率✅ 利用pandas和matplotlib进行结构化分析与可视化✅ 具备良好的扩展性,可对接金融、农业、能源等数据需求场景✅ 可作为期货量化策略数据源✅ 可嵌入自动化报告系统。

2201_76125261的博客 1247

SQL Server 学习5(随机数,整数,编号,序号)

1.1 SET IDENTITY_INSERT 中的几个问题 --1. 会话中某个表已将此属性设置为ON,当为另一个表发出了SET IDENTITY_INSERT ON 句时将出错 --测试的表 CREATE TABLE ta(id int IDENTITY(1,1),col int) CREATE TABLE tb(id int IDENTITY(1,1),col int) GO --设置 IDENTITY_INSERT 属性 SET IDENTITY_INSERT ta ON SET IDENTIT

huang714的专栏 1624

深度揭秘!用 DeepSeek 打造超智能电商客服系统全流程

摘要:本文围绕使用 DeepSeek 开发电商智能客服展开详细教程。先介绍前期准备,包括了解 DeepSeek、获取 API 权限与搭建开发环境。接着阐述数据收集预处理,结合电商业务逻辑实现商品与订单信息查询。还提及优化性能的方法,如模型微调、多轮对话管理和错误处理。然后说明了基于 Web 和云平台的部署方案。最后强调持续监控和改进的重要性,通过设置监控指标、收集分析用户反馈来优化系统,助力开发者打造高效电商智能客服。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 7815

分组排序后,如何取得组的第一条记录

select * from 表 awhere 日期=(select top 1 日期 from 表 where 编号=a.编号 order by 日期 desc)--或:select a.* from 表 a,(select 编号,日期=max(日期) from 表 group by 编号)bwhere a.编号=b.编号 and a.日期=b.日期--或:select * from 表 awhe

betterwy的专栏 2448

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SQL SERVER 排名 函数

 SQL SERVER 排名 函数   ROW_NUMBER():行号。SQL Server2005中,使用ROW_NUMBER()非常方便 SELECT  * , ROW_NUMBER() OVER ( ORDER BY createTime) AS 行号 FROM  表名 备注:数据在排行号时已经排序,如果有根据行号分页的显示,注意ORDER BY排序 RANK():rank函数用于...

linxiang1aa的博客 6790

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

mysql生成10条随机sql语句_access mysql mssql 随机 10条数据的sql语句

access 随机 10条数据的方法select * from table order by rnd(id)其中rnd(id)中的id为表中的自增长字段access随机显示记录(不重复)解决方案'-------------------------数据库连接-----------------------Set objConn = Server.CreateObject("ADODB.Connecti...

weixin_39955732的博客 258

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mysql生成10条随机sql语句_access mysql mssql 随机 10条数据的sql语句 原创

access 随机 10条数据的方法select * from table order by rnd(id)其中rnd(id)中的id为表中的自增长字段access随机显示记录(不重复)解决方案'-------------------------数据库连接-----------------------Set objConn = Server.CreateObject("ADODB.Connecti...

weixin_35297190的博客 424

SQL分组后取出每组的第N条(或第几大/小的)记录(全网最简单的方法)

在实际工作中,有时我们需要用SQL语句对数据分组后取出每一组内的某一条(如第1条,第2条……第n条,或者第1大/小,第2大/小……第n大/小)记录,下面将介绍实现这一需求的最简单的SQL查询方式。 需求:查询每门课程成绩排名第3的学生姓名,对应的课程名称和成绩 思路: 1. 按照课程名称(course)字段对上表score进行分组,再按照成绩(point) 对每个分组内的记录...

grandesucesso的博客 5361

Sql Server插入随机数

--处理性别随机select (case when round(rand()*10,0)>5 then '男' else '女' end), --处理时间段范围内随机select dateadd(dd,round(datediff(dd,'1992-01-01','1995-01-01')*rand(),0),'1992-01-01') --添加外键ALTER TABLE [dbo]...

weixin_30426957的博客 530

sql 自增字段 int identity(1,1)

sql 自增号 2009-06-16 10:47 1: 自增列 类型为:int identity(1,1) 当然也可以是bigint,smallint eg: create table tbName(id int identity(1,1),descriptionvarchar(20)) 或在用企业管理器设计表字段时,将字段设为int,将标识设为是,其它用默认即可 IDENTITY (给

wunai616568168的专栏 1万+

PL/SQL Developer 数据生成器使用指南

1. 功能介绍   数据生成器允许你创建演示和测试数据。对于测试应用程序和查看它们怎样执行大量的数据,这可能是有帮助的。你可以在工具菜单的下面找到数据生成器。 基本上,定义由一个或多个表、你要生成的记录数量和字段数据定义构成。左上部的按钮允许你打开和保存定义。 Developer 数据生成器使用指南" title="PL/SQL Developer 数据生成器使用指南" style

Mr__XiaoBai的专栏 5487

access随机选择不重复记录

 access随机选择不重复记录2007-11-07 11:06-------------------------数据库连接----------------------- Set objConn = Server.CreateObject("ADODB.Connection") objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.

小逗狗的专栏 1074

SQL函数

常用的SQL函数: 运算符: ①between 值1 and 值2:查询数值在值1和值2之间的数据,值1要小于等于值2 ②In(值列表):查询数值在括号里面值中的数据 ③like:模糊查询 另外:查询数据中带有%的数据: SELECT * FROM 表 WHERE 列名 LIKE ‘%%%’ ESCAPE’’; escape可以定义转义字符 ④四则运算 算数运算函数: select ...

laochi5的博客 696

SQLServer百万级别随机用户账号批量生成存储过程

数据库名DEMO,表名tb_user 用户表格式如下:   uid user pass 101200 SDAD34839SF SJSM843871GD 101201 ... ... 101202 ... ... 101203 ... ... uid 为自定义的序号,生成时序号段手工输入。user为用

300

在oracle中自动大批量生成测试数据

用quest benkmark或者powerdesginer,pl/sql developer的数据生成器都可以做,当然自己写sql也可以

夜澜偶作庄周梦 酒后聊为楚客狂 1万+
上一篇: 今天干了件力活,手工写语句来完成数据库同步.
下一篇: 得用SQL语句生成某个库下所有存储过程脚本,并每个存为一个文件
fcuandy
博客等级 码龄23年 780粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值