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;
转载请注明原文地址: https://ju.6miu.com/read-500330.html