-
begin; --启动事务 insert into 表名 values (); --向表中插入数据 select * from 表名 rollback; --回滚事务 rollback 回滚的意思。 就是数据库里做修改后 ( update ,insert , delete)未commit 之前 使用rollback 可以恢复数据到修改之前。 insert into 表名 values(); select * from 表名 会发现出现了空洞查看全部
-
唯一序列号: 场景:数据库主键、业务序列号 优先选择系统提供的序列号生成方式。但可能会有空洞产生。 特殊情况下可使用SQL方式生成序列号,如要求有一定规律,不一定由数字构成 系统生成方法: rollback数据回滚查看全部
-
使用序列化表的方式来实现列转行查看全部
-
使用UNION的方式实现列转行: UNION是无重复记录的 UNION ALL是所有记录,是可重复的查看全部
-
行转列: SELECT username,REPLACE(substring(SUBSTRING_INDEX(mobile,',',a.id), CHAR_LENGTH(SUBSTRING_INDEX(mobile,',',a.id-1))+1),',','') AS mobile FROM tb_sequence AS a CROSS JOIN (SELECT username, CONCAT(mobile,',') AS mobile, (LENGTH(mobile)-LENGTH(REPLACE(mobile,',',''))+1) AS size FROM user1) AS b ON a.id <= b.size;查看全部
-
行转列: 利用自身连接来实现: SELECT * FROM ( SELECT SUM(KILLS) AS 'A' FROM A INNER JOIN B ON A.NAME=B.USER_NAME WHERE A.NAME='A') AS A CROSS JOIN( SELECT SUM(KILLS) AS 'B' FROM A INNER JOIN B ON A.NAME=B.USER_NAME WHERE A.NAME='B') AS B CROSS JOIN( SELECT SUM(KILLS) AS 'C' FROM A INNER JOIN B ON A.NAME=B.USER_NAME WHERE A.NAME='C')AS C; 比如成绩 1、分别查询出不同同学的成绩,并将字段名改为同学的名字 2、通过交叉连接,将不同的语句连接起来 缺点:是将原来查询的结果每一行单独查询出来,再进行拼接。因此每增加一个同学就增加一个SELECT语句。并且是通过交叉连接,要保证每个查询的结果只能是一个,不然没办法通过交叉连接实现转换。查看全部
-
SQL开发技巧(二) 内容介绍: 1.如何进行行列转换 2.如何生成唯一序列号 3.如何删除重复数据查看全部
-
行转列查看全部
-
case行转列查看全部
-
sql 分号代表一行的结束,中间不要加分号。查看全部
-
更复杂的重复数据查看全部
-
如何处理重复的数据查看全部
-
select sum(case when user_name='孙悟空' then kills end) as '孙悟空', sum(case when user_name='猪八戒',thwn kills end) as '猪八戒') from user_name a join user_kills b on a.id = b.id查看全部
-
利用序列表处理列转行的数据查看全部
-
关于学生成绩的行转列代码参考: //表格定义及数据 create table if not exists score( id smallint unsigned not null primary key auto_increment, uname varchar(100) not null, subject varchar(100) not null, score smallint not null )engine=innodb default charset=utf8; insert score values (default, 'a', 'math', 10), (default, 'a', 'english', 20), (default, 'a', 'chinese', 30), (default, 'b', 'math', 50), (default, 'b', 'english', 60), (default, 'b', 'chinese', 70), (default, 'c', 'math', 110), (default, 'c', 'english', 120), (default, 'c', 'chinese', 130); //转换代码: select math.uname,math.math,english.english,chinese.chinese from (select id, uname, score as math from score where subject='math') as math inner join (select id, uname, score as english from score where subject='english') as english on math.uname=english.uname inner join (select id, uname, score as chinese from score where subject='chinese') as chinese on chinese.uname=english.uname;查看全部
举报
0/150
提交
取消