我知道有很多答案使用rank()或row_number()表示,但是,SQL-FRONT或Navicat不支持它们,我尝试使用Microsoft SSMS,但它不支持我的sql。我尝试了很多方法,但是没有用。所以我现在无望了。 表如下所示,我只想知道如何删除具有相同名称和时间的重复记录。谢谢。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
了解您的困境,您希望在不支持RANK()
或ROW_NUMBER()
函数的数据库管理工具中删除具有相同名称和时间的重复记录。根据您的需求,这里提供一个更通用的SQL方法来解决此问题,该方法通常适用于多种SQL数据库系统,包括那些可能不支持窗口函数的系统。
创建临时表或新表:首先,创建一个临时表或一个新的表用于存放去重后的数据。这将作为处理过程中暂存无重复记录的地方。
插入唯一记录:使用INSERT INTO...SELECT
语句结合GROUP BY
子句来插入唯一的记录。这里假设您的表名为original_table
,并且您希望基于name
和time
列进行去重。
INSERT INTO new_table (name, time)
SELECT name, time
FROM original_table
GROUP BY name, time;
-- 首先,确认环境允许并已经做好数据备份
DROP TABLE original_table;
RENAME TABLE new_table TO original_table;
或者,如果您的工具或数据库不允许直接替换,您可能需要手动迁移数据并删除旧表。
通过上述步骤,您可以尝试在不直接依赖于特定窗口函数(如RANK()
或ROW_NUMBER()
)的情况下,实现删除具有相同名称和时间的重复记录的目标。请根据您的具体数据库系统调整SQL语法,并确保所使用的数据库管理工具支持这些基本的SQL操作。