我得到了大约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