您的位置:首页 > 数据库 > MySQL

mysql临时表

2017-03-01 23:20 169 查看
1、 在我们的项目中,往往可能会有这么一个需求:比如老师给学生选课,前台页面老师勾选了n个学生,给他们选语文课,这时有的学生已经选过语文课了,我们向后台传递这些学生的信息和语文课信息。一般初学者,会在后端业务层新增是判断勾选的学生是否选了语文课,如果选择了,则不去新增。
其实,我们通过mysql的语句关键词ignore,则不需要业务层判断,举例说明如下:

首先,我们有个user表,字段有id、name,此表已有数据,如下图:



当我们使用下面sql语句



结果应为重复数据,报错了。

那我们看下面sql语句,结果如下:


结论:当我们为了避免重复是,sql中可以使用ingnre关键词,来达到简化业务层代码的目的

2、 关于临时表,借用别人的例子,如下:

给定一个user表,包含id和uid两列,其中uid列可能有重复,要求找出重复的记录,并删掉多余的记录,使得对于uid重复的记录只保留id最小的记录

drop table if EXISTS `tmp`;

create table tmp as select min(id) as id,uid from user GROUP by uid HAVING count(uid)>1;

delete from user where id not in (select id from tmp)  and uid in(select uid from tmp); 

drop table tmp;

commit;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql sql