为了账号安全,请及时绑定邮箱和手机立即绑定
  • uuu
    查看全部
  • 并发性数据
    查看全部
  • #慕课最后一题 CREATE TEMPORARY TABLE im_tuser AS ( SELECT c.id, replace( substring( substring_index(c.phone, ',', a.id), char_length( substring_index(c.phone, ',', a.id - 1) ) + 1), ',', '') AS phone FROM im_sequence AS a CROSS JOIN ( SELECT b.id, concat(b.phone, ',') AS phone, length(b.phone) - length(replace(b.phone, ',', '')) + 1 AS size FROM im_userrepect AS b ) AS c ON a.id <= c.size ); 我设计的表只有id和phone,以上是列转行存为临时表
    查看全部
  • 完善一下存储过程,添加表 #唯一序列号 获取当前年月日+3位流水号 #用orser_seq判断插入最大值 DROP PROCEDURE IF EXISTS usp_seqnum; CREATE PROCEDURE usp_seqnum() BEGIN #定义变量并获取相关值 DECLARE v_cnt INT; DECLARE v_timestr INT; SET v_timestr = DATE_FORMAT(NOW(),'%Y%m%d'); SELECT ROUND(RAND()*100,0)+1 INTO v_cnt; #新建表 DROP TABLE IF EXISTS im_orderseq; CREATE TABLE im_orderseq( timestr NVARCHAR(8) NOT NULL , ordersn INT(3) ); START TRANSACTION; #更新表的最值 UPDATE im_orderseq SET ordersn = ordersn + v_cnt WHERE timestr = v_timestr; IF ROW_COUNT() = 0 THEN #插入数据 INSERT INTO im_orderseq(timestr,ordersn) VALUES(v_timestr,v_cnt); END IF; SELECT CONCAT(v_timestr,LPAD(ordersn,7,0))AS ordersn FROM im_orderseq WHERE timestr = v_timestr; COMMIT; END; CALL usp_seqnum(); SELECT * FROM im_orderseq;
    查看全部
  • 分享一个序列表的存储过程 DROP PROCEDURE IF EXISTS usp_getseqtable; CREATE PROCEDURE usp_getseqtable( IN id INT ) BEGIN DECLARE i INT; DROP TABLE IF EXISTS im_sequence; CREATE TABLE im_sequence ( id INT AUTO_INCREMENT PRIMARY KEY )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; SET i=1; WHILE i <= id DO #插入表数据 INSERT INTO im_sequence VALUES (NULL); SET i = i + 1; END WHILE; END; CALL usp_getseqtable(20)
    查看全部
  • 特殊sql生成序列号
    查看全部
  • 列行转换
    查看全部
  • 1.判断数据是否重复: SELECT user_name , over, count(*) FROM user1_test GROUP BY user_name, over HAVING count(*)>1 2.删除重复数据,对于相同数据保留ID最大的 DELETE * FROM user1_test a JOIN( SELECT user_name,COUNT(*),MAX(id) AS id FROM user1_test GROUP BY user_name HAVING COUNT(*) > 1 ) b ON a.user_name = b.user_name WHERE a.id < b.id 3.将表中查询的数据再次插入到表中 INSERT INTO xmss_wh(XM_ID,WH_ID,YJ,SH,SHR,FJ_NAME,FJ_ID) SELECT XM_ID,WH_ID,YJ,SH,SHR,FJ_NAME,FJ_ID FROM xmss_wh WHERE ID=28; sql中的group by 用法解析: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。 它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 --注意:group by 是先排序后分组; --举例子说明:如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术 select DepartmentID as '部门名称', COUNT(*) as '个数' from BasicDepartment group by DepartmentID 这个就是使用了group by +字段进行了分组,其中我们就可以理解为我们按照了部门的名称ID DepartmentID将数据集进行了分组;然后再进行各个组的统计数据分别有多少; 如果不用count(*)等类似函数 select DepartmentID,DepartmentName from BasicDepartment group by DepartmentID 将会报错
    查看全部
  • 更复杂的重复删除:属性中有相同的字段 1、想将属性通过单列转多行得到新的表 2、再删除重复数据 3、再利用GROUP BY CONCAT回复成原表
    查看全部
  • 判断数据是否重复:GROUP BY column_name HAVING COUNT(*)>=2; 通过多表删除 GROUP BY后,相当于形成一个一个单独的表
    查看全部
  • 存储过程,订单号: DECLARE v_cnt INT; DECLARE v_timestr INT; DECLARE rowcount BIGINT; SET v_timestr = DATE_FORMAT(NOW(),'%Y%m%d'); SELECT ROUND(RAND()*100,0)+1 INTO v_cnt; START TRANSACTION; UPDATE order_seq SET order_sn = order_sn + v_cnt WHERE timestr = v_timestr; IF ROW_COUNT() = 0 THEN INSERT INTO order_seq(timestr,order_sn) VALUES(v_timestr,v_cnt); END IF; SELECT CONCAT(v_timestr,LPAD(order_sn,7,0))AS order_sn FROM order_seq WHERE timestr = v_timestr; COMMIT; 知识点: 1、在sql语句中添加变量。 declare @local_variable data_type 声明时需要指定变量的类型,可以使用SET、SELECT、SELECT...INTO对变量进行赋值,在sql语句中就可以使用@local_variable来调用变量。 2、RAND()返回一个介于 0 到 1(不包括 0 和 1)之间的伪随机 float 值。 3、事务 4、ROW_COUNT()函数返回查询语句执行后,被影响的列数目 5、IF...THEN...END IF;
    查看全部
  • 唯一序列号: 场景:数据库主键、业务序列号 优先选择系统提供的序列号生成方式。当可能会有空洞产生。 特殊情况下可使用SQL方式生成序列号,如要求有一定规律,不一定由数字构成 系统生成方法: rollback数据回滚
    查看全部
  • 使用序列化表进行行列转换。
    查看全部
  • 可使用UNION来实现多列转行
    查看全部

举报

0/150
提交
取消
课程须知
本门课程主要针对的是MySQL数据库,熟悉数据库的CRUD操作是掌握本门课程精华的必要条件。
老师告诉你能学到什么?
1、如何进行行列转换 2、如何生成唯一序列号 3、如何删除重复数据

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!