我已向客戶提供以下查詢,以删除重複的電话號碼.記錄在MSSQL資料庫中,但現在他们也需要在MySQL上进行記錄,並且他们報告MySQL抱怨查詢的格式.我已经包括了一个測試表的設置,该測試表具有重複的代碼示例,但實際的删除查詢才是最重要的。
由於我仍在忙於下載和安裝MySQL,因此我無知而紧急地問了這个問题,也许有人可以提供帮助。
create table bkPhone
(
phoneNo nvarchar(20),
firstName nvarchar(20),
lastName nvarchar(20)
)
GO
insert bkPhone values('0783313780','Brady','Kelly')
insert bkPhone values('0845319792','Mark','Smith')
insert bkPhone values('0834976958','Bill','Jones')
insert bkPhone values('0845319792','Mark','Smith')
insert bkPhone values('0828329792','Mickey','Mouse')
insert bkPhone values('0834976958','Bill','Jones')
alter table bkPhone add phoneId int identity
delete from bkPhone
where phoneId not in
(
select min(phoneId)
from bkPhone
group by phoneNo,firstName,lastName
having count(*) >= 1
)
最新回復
- 5月前1 #
- 5月前2 #
您可以通過以下方法選擇唯一的物件:
select distinct(phoneNo) from bkPhone
並將它们放入另一个表中,删除旧表,然後將新表重命名為旧名稱。
- 5月前3 #
MySQL抱怨,因為這没有意義.您尝試使用
min()
进行汇总 分組依据的列.現在,如果您要删除同一个人的重複電话號碼,則SQL應该為:
delete from bkPhone where phoneId not in ( select min(phoneId) from bkPhone group by firstName,lastName /* i.e. grouping by person and NOT grouping by phoneId */ having count(*) >= 1 )
- 5月前4 #
Mysql還包括:
http://mssql-to-postgresql.blogspot.com/2007/12/deleting-duplicates-in-postgresql-ms.html
相似問題
- mysql:檢查表是否存在時間重叠?mysqlsqltimerangeoverlap2021-01-11 22:24
- sql:MySQL SELECT DISTINCT多列mysqlsqldistinct2021-01-11 21:26
- sql:如果与ODBC連線,MS Access是否支援" CASE wHEN"子句?sqldatabasemsaccessodbc2021-01-11 03:26
- mysql:使用SQL計算型別時間的总和sqlmysql2021-01-11 02:27
- database:MySQL DB中列名稱中的连字元mysqldatabasehyphen2021-01-11 00:27
有很多方法可以通往罗马.這是一.非常快.因此,您可以將其用於大型資料庫.不要忘記索引。 诀窍是:使phoneNo唯一,並使用" ignore"。
如果資料表已经存在,則只需執行帶有以下插入忽略選擇的建立表選擇.最後,您必须執行一些表重命名語句.就是這樣。
此解決方法比删除操作快得多,而且快得多.