mysql如果一张表里面两个字段的值相同,则添加到第二张表里,怎么做?
一、mysql如果一张表里面两个字段的值相同,则添加到第二张表
本问题的意思是说,如果表A的字段1等于字段2,则插入表B。INSERT INTO 第二张表(One, Two) SELECT One, Two FROM 名列前茅张表;如果一模一样,可以直接INSERT INTO 第二张表 SELECT * FROM 名列前茅张表。
MySQL根据某一个或者多个字段查找重复数据的sql语句
1.表中有id和name 两个字段,查询出name重复的所有数据
1 | select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) |
2、查询出所有数据进行分组之后,和重复数据的重复次数的查询数据,先列下:
1 | select count(username) as ‘重复次数’,username from xi group by username having count(*)>1 order by username desc |
3、一下为 查看别人的 结果,现列下:查询及删除重复记录的方法大全
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
1 2 | select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) |
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
1 2 3 | delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1) |
3、查找表中多余的重复记录(多个字段)
1 2 | select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) |
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
1 2 3 | delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) |
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
1 2 3 | select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) |
(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
1 | Select Name,Count(*) From A Group By Name Having Count(*) > 1 |
如果还查性别也相同大则如下:
1 | Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1 |
(三)
1 2 3 4 5 6 7 8 9 10 11 | declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; open cur_rows fetch cur_rows into @id,@maxwhile @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete from 表名 where 主字段 = @id fetch cur_rows into @id,@maxend close cur_rows set rowcount 0 |
延伸阅读:
二、SQL是什么
Structured Query Language
‘SQL’是结构化查询语言,是一种用来操作 RDBMS 的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库
SQL语句主要分为:DQL:数据查询语言,用于对数据进行查询,如select**
DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete**
TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
DCL:数据控制语言,进行授权与权限回收,如grant、revoke
DDL:数据定义语言,进行数据库、表的管理等,如create、drop
CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor对于web程序员来讲,重点是数据的crud(增删改查),必须熟练编写DQL、DML,能够编写DDL完成数据库、表的操作,其它语言如TPL、DCL、CCL了解即可SQL 是一门特殊的语言,专门用来操作关系数据库不区分大小写

猜你喜欢LIKE
相关推荐HOT
更多>>
线程池执行过程中遇到异常会发生什么,怎样处理?
线程池执行过程中遇到异常以及处理线程池执行过程中遇到异常会触发一系列的处理机制。当线程池中的某个线程抛出未捕获的异常时,线程将立即终止...详情>>
2023-10-16 22:10:11
为什么说PHP与Swoole是优异组合?
PHP与Swoole在Web开发和网络编程领域中,共同构成了一种强大的解决方案。什么是PHPPHP是一种广泛使用的开源服务器端脚本语言,特别适用于Web开...详情>>
2023-10-16 20:56:37
有什么好用的redis可视化管理工具?
一、Redis Desk较好 ManagerRedis Desk较好 Manager是一款非常受欢迎的Redis数据库管理工具。它支持直接进行数据修改、删除和新增等操作,而且...详情>>
2023-10-16 19:30:54
mysql怎么查询连续时间段的最大值?
一、mysql怎么查询连续时间段的最大值按仪器与时间(处理成小时)group by,计算值的数量与和,再根据结果判断值数量是否有缺失值,以及和的最...详情>>
2023-10-16 15:15:18热门推荐
Oracle怎么连接数据库?
沸git pull 和git fetch的区别?
热JDK动态代理为什么必须要基于接口?
热线程池执行过程中遇到异常会发生什么,怎样处理?
新HTTP协议中URI和URL有什么区别?
为什么说PHP与Swoole是优异组合?
显示器的 VGA、HDMI、DVI 和 DisplayPort 接口有什么区别?
如何删除需要使用管理员权限才能删除的文件?
有什么好用的redis可视化管理工具?
arm架构和x86架构有什么区别?
GitLab为什么选择Vue.js?
实现atoi函数时需要注意什么?
Ruby中为什么不能显式的调用私有方法?
与数据库的连接为什么会很耗时、耗费资源?
技术干货






