当前位置: 首页 > news >正文

网站开发费用多少钱学做花蛤的网站

网站开发费用多少钱,学做花蛤的网站,北京朝阳区楼盘,做网站主播要什么条件【Mysql】group语句删除重复数据只保留一条 【一】案例分析 假如在数据初始化的时候#xff0c;insert脚本执行了两次#xff0c;导致表里的数据都是重复的#xff08;没有设置唯一键#xff09;。这个时候再加上mybatis-plus的selectOne方法#xff0c;就会出现报错。因… 【Mysql】group语句删除重复数据只保留一条 【一】案例分析 假如在数据初始化的时候insert脚本执行了两次导致表里的数据都是重复的没有设置唯一键。这个时候再加上mybatis-plus的selectOne方法就会出现报错。因为selectOne方法要求查询结果必须唯一如果出现多条数据就会报错。 所以需求就是根据某个条件字段查询出所有这个字段存在重复的数据然后删除掉重复的数据保证条件查询的时候只能查出来1条数据。 以这张表为例 CREATE TABLE test (id varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 注解id,name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 名字,PRIMARY KEY (id) USING BTREE ) ENGINE InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci ROW_FORMAT Compact;INSERT INTO test (id,name) VALUES (replace(uuid(),-,),张三),(replace(uuid(),-,),张三);表里有两条数据然后名字是相同的但是id是不同的现在要求是只留一条数据 【二】步骤一查询name值重复的数据 现实开发当中可能一个字段无法锁定重复值可以采取group by多个值利用多个值来锁定重复的行数据 SELECTname FROMtest GROUP BY name HAVINGcount( name ) 1【三】步骤二查询重复数据里面每个最小的id SELECTmin( id ) AS id FROMtest GROUP BY name HAVINGcount( name ) 1【四】步骤三查询去掉重复数据最小id的其他数据也就是要删除的数据 SELECT* FROMtest WHEREname IN ( SELECT name FROM test GROUP BY name HAVING count( name ) 1 ) AND id NOT IN (SELECTmin( id ) FROMtest GROUP BY name HAVINGcount( NAME ) 1)【五】步骤四删除去掉重复数据最小id的其他数据 有了查询直接改成delete不就可以了真的是这样吗其实不是的如下运行报错 首先明确一点这个错误只会发生在delete语句或者update语句拿update来举例 : update A表 set A列 (select B列 from A表) 这种写法就会报这个错误原因你又要修改A表然后又要从A表查数据而且还是同层级。Mysql就会认为是语法错误 嵌套一层就可以解决update A表 set A列 (select a.B列 from (select * from A表) a); 当然这个只是个示例这个示例也存在一定的问题比如(select a.B列 from (select * from A表) a)他会查出来多条然后赋值的时候会报 1242 - Subquery returns more than 1 row。 嵌套一层他就可以和update撇清关系会优先查括号里面的内容查询结果出来过后会给存起来类似临时表可能有的人该好奇了update A表 set A列 (select B列 from A表) 我明明加括号了呀难道不算嵌套吗当然不算那个括号根本没有解决他们之间的层次关系 【六】正确的写法 首先先把表备份好删错了也还能快速恢复。直接拷贝的一个新的表改名字就行 1方式一 DELETE FROM test WHERE name IN ( select a.name from (SELECT name FROM test GROUP BY name HAVING count( name ) 1) a) AND id NOT IN (select a.id from (SELECT min(id) as id FROM test GROUP BY name HAVING count( name ) 1) a) 注意删除之前一定要先查询然后再删除否则一旦语法有问题导致删了不想删除的数据想要恢复很麻烦或者删除前备份好数据不要嫌麻烦一旦出问题才是真正的大麻烦 2方法二 DELETE FROM test WHEREid NOT IN (SELECTt.id FROM( SELECT MIN(id) as id FROM test GROUP BY NAME ) t) 【七】错误的写法 千万千万不能这么搞下面这个语法相当于是先按name分组然后查出来大于1的这时候假如大于1的有很多然后外面嵌套的那一层只取了最小的一条数据然后再加上使用的是NOT IN最终会导致数据全部被删除 执行前有四条数据实际上我们要的是张三留下来一条然后李四留下来一条 执行结果只留下了一条
http://www.w-s-a.com/news/921575/

相关文章:

  • 规模以上工业企业的标准北京seo结算
  • 软件开发过程模型如何做网站性能优化
  • 网站建站公司广州南京江北新区楼盘
  • 哪些做展架图的网站好开发公司2022年工作计划
  • 磨床 东莞网站建设wordpress下载类主题系统主题
  • 免费学编程网站芜湖做网站都有哪些
  • 能发外链的网站门户网站网页设计规范
  • 网站建设所需人力南城区网站建设公司
  • 网站做图尺寸大小手机模板网站模板下载网站有哪些内容
  • 德阳市建设管理一体化平台网站做美食网站
  • 怎么做自己的推广网站2024年瘟疫大爆发
  • vps正常网站打不开linux网站建设
  • 福州网站快速排名在一个网站的各虚拟目录中默认文档的文件名要相同
  • 网站开发 流程图网站开发用哪个linux
  • 怎么用自己电脑做服务器发布网站吗seo门户网价格是多少钱
  • 备案网站可以做影视站网站400
  • 四川住房与城乡建设部网站注册登记
  • 网站建设第三方沈阳工程最新动态
  • 兰州做网站客户上海企业在线登记
  • 新乡公司做网站wordpress被大量注册
  • 小语种服务网站公众号平台建设网站
  • 免费做mc皮肤网站企业网站建设合同模板
  • 做网站可以申请个体户么网站的定位分析
  • jsp做的零食网站下载wordpress侧边栏折叠
  • 帝国网站单页做301南京旅游网站建设公司
  • 网站sem优化怎么做网站建设推广安徽
  • 比较好的室内设计网站潍坊网络科技
  • 南宁网站建设公设计联盟网站
  • 多个图表统计的网站怎么做百度推广费2800元每年都有吗
  • 连江县住房和城乡建设局网站企业类网站模版