4-2 MySQL-如何处理复杂的重复数据删除
4-1 MySQL-利用主键删除重复数据
3-2 如何使用SQL语句建立特殊需求的序列号
3-1 MySQL-在数据库中立唯一序列号的常用方法
2-8 MySQL-使用序列化表的方法实现列转行
select user_name, case when c.id = 1 then 'arms' when c.id = 2 then 'clothing' when c.id = 3 then 'shoe' end as equipment ,coalesce(case when c.id = 1 then arms end ,case when c.id = 2 then clothing end ,case when c.id = 3 then shoe end) as eq_name from user1 a join user1_equipment b on a.id = b.user_id cross join tb_sequence c where c.id <= 3 order by user_name;
2-7 MySQL-使用UNION的方法实现列转行
select user_name,'arms' as equipment,arms from user1 a join user1_equipment b on a.id=b.user_id union all select user_name,'clothing' as equipment,clothing from user1 a join user1_equipment b on a.id=b.user_id union all select user_name,'shoe' as equipment,shoe from user1 a join user1_equipment b on a.id=b.user_id order by user_name;
2-6 MySQL-使用序列化表的方法实现行转列
2-5 MySQL-单列转多行场景介绍
2-4 MySQL-使用CASE方法实现行转列
2-3 MySQL-使用自连接的方法实现行转列
select a.`user_name`,kills from user1 a join user_kills b on a.id=b.user_id; select a.`user_name`,sum(kills) from user1 a join user_kills b on a.id=b.user_id group by a.user_name; select a.`user_name`,sum(kills) from user1 a join user_kills b on a.id=b.user_id group by a.user_name='孙悟空'; select * from ( select sum(kills) as '孙悟空' from user1 a join user_kills b on a.id=b.user_id group by a.user_name='孙悟空'; ) a cross join ( select sum(kills) as '猪八戒' from user1 a join user_kills b on a.id=b.user_id group by a.user_name='猪八戒'; ) b cross join ( select sum(kills) as '沙僧' from user1 a join user_kills b on a.id=b.user_id group by a.user_name='沙僧'; ) c
2-2 MySQL-需求分析
2-1 MySQL-行转列场景介绍
1-1 MySQL开发技巧(二)课程介绍
多条sql连接查询
UNION ALL 操作用于结合两个或更多 SELECT 语句的结果集,包括所有匹配的行,甚至包括重复的行。这与 UNION 不同,因为 UNION 会自动删除重复的行。
满足条件:
1、两个select查询的列的数量必须相同。
2、每个列的数据类型需要相似。
汇总显示1234
报表统计1234
内容介绍
如何进行行列转换
如何生成唯一序列号
如何删除重复数据
删除重复数据
查询重复数据
序列号进行行列转换
多列转行SQL语句
列转行SQL语句:
如何处理重复数据
SELECT * FROM (SELECT sum(kills) as '沙僧' FROM user1 a JOIN user_kills b ON a.id=b.user_id and a.user_name='沙僧') a cross JOIN (SELECT sum(kills) as '猪八戒' FROM user1 a JOIN user_kills b ON a.id=b.user_id and a.user_name='猪八戒') b CROSS JOIN (SELECT sum(kills) as '孙悟空' FROM user1 a JOIN user_kills b ON a.id=b.user_id and a.user_name='孙悟空') c
CREATE TABLE `user1` (
`id` int(11) NOT NULL,
`user_name` varchar(3) COLLATE utf8_bin NOT NULL,
`over` varchar(5) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
CREATE TABLE `user2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(3) COLLATE utf8_bin NOT NULL,
`over` varchar(5) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
CREATE TABLE `user_kills` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`timestr` datetime NOT NULL,
`kills` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
利用Group By和having从句来处理判断数据是否重复
利用Group By和having从句处理
删除重复数据,对于相同数据保留ID最大的
mysql中生成唯一序列号方式
使用系统提供的序列化生成方式auto_increment
1)、在开启事务回滚,重新插入后出现空洞(id不连续)