我得到了大約5個用戶的列表中有重複的條目。 這是我用來獲取重複條目的查詢。請建議一些簡單的方法來刪除少量條目。從表中刪除幾個重複的行sql
USE [DB]
SELECT UserName, COUNT(*) AS CountOF
FROM UserDetails
WHERE RoleID = '2'
GROUP BY UserName
HAVING COUNT(*) > 1
我得到了大約5個用戶的列表中有重複的條目。 這是我用來獲取重複條目的查詢。請建議一些簡單的方法來刪除少量條目。從表中刪除幾個重複的行sql
USE [DB]
SELECT UserName, COUNT(*) AS CountOF
FROM UserDetails
WHERE RoleID = '2'
GROUP BY UserName
HAVING COUNT(*) > 1
使用方括號表示SQL Server。如果是這樣,你可以這樣做:
WITH todelete as (
SELECT ud.*,
ROW_NUMBER() OVER (PARTITION BY RoleId, username ORDER BY RoleId) as seqnum
FROM UserDetails
WHERE RoleID = 2
)
DELETE FROM todelete
WHERE seqnum > 1;
注意:如果RoleId
是一個數字,那麼就不要比較值的字符串。
需要像ID或createtime 多個數據庫的支持
with repeatData as (
SELECT UserName,COUNT(*) as CountOF,min(id) as keepTag FROM UserDetails
WHERE RoleID = '2'
GROUP BY UserName
HAVING COUNT(*)>1),
toDelData as (
select id from UserDetails
where UserName in (SELECT UserName from repeatData)
and id not in (SELECT keepTag from repeatData))
delete FROM UserDetails where id in (select id from toDelData)
你確定你正在使用MySQL(而不是SQL Server)的另一個uniq的列?桌子的結構是什麼? –
我正在使用sql server。對不起,關於錯誤的標籤 – beginner