一、mysql如果一張表里面兩個字段的值相同,則添加到第二張表
本問題的意思是說,如果表A的字段1等于字段2,則插入表B。INSERT INTO 第二張表(One, Two) SELECT One, Two FROM 名列前茅張表;如果一模一樣,可以直接INSERT INTO 第二張表 SELECT * FROM 名列前茅張表。
MySQL根據(jù)某一個或者多個字段查找重復(fù)數(shù)據(jù)的sql語句
1.表中有id和name 兩個字段,查詢出name重復(fù)的所有數(shù)據(jù)
1 | select?* from?xi a where?(a.username) in?(select?username from?xi group?by?username having?count(*) > 1) |
2、查詢出所有數(shù)據(jù)進行分組之后,和重復(fù)數(shù)據(jù)的重復(fù)次數(shù)的查詢數(shù)據(jù),先列下:
1 | select?count(username) as?‘重復(fù)次數(shù)’,username from?xi group?by?username having?count(*)>1 order?by?username desc |
3、一下為 查看別人的 結(jié)果,現(xiàn)列下:查詢及刪除重復(fù)記錄的方法大全
1、查找表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個字段(peopleId)來判斷
1 2 | select?* from?people where?peopleId in?(select?peopleId from?people group?by?peopleId having?count(peopleId) > 1) |
2、刪除表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個字段(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、查找表中多余的重復(fù)記錄(多個字段)
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、刪除表中多余的重復(fù)記錄(多個字段),只留有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、查找表中多余的重復(fù)記錄(多個字段),不包含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”值有可能會相同,
現(xiàn)在就是需要查詢出在該表中的各記錄之間,“name”值存在重復(fù)的項;
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’是結(jié)構(gòu)化查詢語言,是一種用來操作?RDBMS?的數(shù)據(jù)庫語言,當(dāng)前關(guān)系型數(shù)據(jù)庫都支持使用SQL語言進行操作,也就是說可以通過?SQL?操作 oracle,sql server,mysql,sqlite 等等所有的關(guān)系型的數(shù)據(jù)庫
SQL語句主要分為:DQL:數(shù)據(jù)查詢語言,用于對數(shù)據(jù)進行查詢,如select**
DML:數(shù)據(jù)操作語言,對數(shù)據(jù)進行增加、修改、刪除,如insert、udpate、delete**
TPL:事務(wù)處理語言,對事務(wù)進行處理,包括begin transaction、commit、rollback
DCL:數(shù)據(jù)控制語言,進行授權(quán)與權(quán)限回收,如grant、revoke
DDL:數(shù)據(jù)定義語言,進行數(shù)據(jù)庫、表的管理等,如create、drop
CCL:指針控制語言,通過控制指針完成表的操作,如declare cursor對于web程序員來講,重點是數(shù)據(jù)的crud(增刪改查),必須熟練編寫DQL、DML,能夠編寫DDL完成數(shù)據(jù)庫、表的操作,其它語言如TPL、DCL、CCL了解即可SQL 是一門特殊的語言,專門用來操作關(guān)系數(shù)據(jù)庫不區(qū)分大小寫