一、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 是一門特殊的語言,專門用來操作關系數據庫不區分大小寫