根据条件删除记录
Deleting Records Based on Criteria
我有一个从 table(用户)那里得到的用户列表(字段 = 用户名)。有些是重复的。
如果有重复的记录,我需要删除最近创建的记录(CreatedOn)。
此外,如果因为数据库中有 'relationships established to this user ID' 而无法删除,我需要它跳到下一条记录并继续删除。
我该如何实现??
您可以尝试这样的操作:
Delete from Users
where nameuser in
(select nameuser from Users
Group by nameuser
Having count(nameuser) > 1)
如果相同的 UserName 也有一个较早的 CreatedOn:
,则使用 EXISTS
删除一行
delete from users u1
where exists (select 1 from users u2
where u2.UserName = u1.UserName
and u2.CreatedOn < u1.CreatedOn)
或者,另一种方法:
delete from users
where (UserName, CreatedOn) not in (select UserName, MIN(CreatedOn)
from users
group by UserName)
从 Diego 的回答中添加并检查用户名是否不是 table 中最早的实例。
DELETE FROM
Users
WHERE
UserName IN
(SELECT UserName FROM Users GROUP BY UserName HAVING COUNT(UserName) > 1)
AND
CreatedOn !=
(SELECT MIN(CreatedOn) FROM Users T1 WHERE UserName = T1.UserName);
DELETE from user u
WHERE u.UserId in ( SELECT Distinct userid from User u join User u2 where u.UserName = u2.UserName
and u.CreatedOn > u2.CreatedOn)
您不能跳过一个 sql 中的错误,但您可以排除相关表中存在的用户 ID。
我有一个从 table(用户)那里得到的用户列表(字段 = 用户名)。有些是重复的。
如果有重复的记录,我需要删除最近创建的记录(CreatedOn)。
此外,如果因为数据库中有 'relationships established to this user ID' 而无法删除,我需要它跳到下一条记录并继续删除。
我该如何实现??
您可以尝试这样的操作:
Delete from Users
where nameuser in
(select nameuser from Users
Group by nameuser
Having count(nameuser) > 1)
如果相同的 UserName 也有一个较早的 CreatedOn:
,则使用EXISTS
删除一行
delete from users u1
where exists (select 1 from users u2
where u2.UserName = u1.UserName
and u2.CreatedOn < u1.CreatedOn)
或者,另一种方法:
delete from users
where (UserName, CreatedOn) not in (select UserName, MIN(CreatedOn)
from users
group by UserName)
从 Diego 的回答中添加并检查用户名是否不是 table 中最早的实例。
DELETE FROM
Users
WHERE
UserName IN
(SELECT UserName FROM Users GROUP BY UserName HAVING COUNT(UserName) > 1)
AND
CreatedOn !=
(SELECT MIN(CreatedOn) FROM Users T1 WHERE UserName = T1.UserName);
DELETE from user u
WHERE u.UserId in ( SELECT Distinct userid from User u join User u2 where u.UserName = u2.UserName
and u.CreatedOn > u2.CreatedOn)
您不能跳过一个 sql 中的错误,但您可以排除相关表中存在的用户 ID。