本问题的意思是说,如果表A的字段1等于字段2,则插入表B。INSERT INTO 第二张表(One, Two) SELECT One, Two FROM 名列前茅张表;如果一模一样,可以直接INSERT INTO 第二张表 SELECT * FROM 名列前茅张表。
一、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 是一门特殊的语言,专门用来操作关系数据库
- 不区分大小写