是的,您可以多次找到类似的问题,但是:此处发布的最优雅的解决方案适用于 SQL Server,但不适用于 Sybase(在我的情况下为 Sybase Anywhere 11)。我什至发现一些与 Sybase 相关的问题被标记为 SQL Server 问题的重复,这没有帮助。
我喜欢但不起作用的解决方案的一个例子是WITH ... DELETE ...
构造。
我找到了使用游标或while循环的工作解决方案,但我希望没有循环也可以。
我希望有一个漂亮、简单和快速的查询,只删除一个完全相同的副本。
这里有一个用于测试的小框架:
IF OBJECT_ID( 'tempdb..#TestTable' ) IS NOT NULL
DROP TABLE #TestTable;
CREATE TABLE #TestTable (Column1 varchar(1), Column2 int);
INSERT INTO #TestTable VALUES ('A', 1);
INSERT INTO #TestTable VALUES ('A', 1); -- duplicate
INSERT INTO #TestTable VALUES ('A', 1); -- duplicate
INSERT INTO #TestTable VALUES ('A', 2);
INSERT INTO #TestTable VALUES ('B', 1);
INSERT INTO #TestTable VALUES ('B', 2);
INSERT INTO #TestTable VALUES ('B', 2); -- duplicate
INSERT INTO #TestTable VALUES ('C', 1);
INSERT INTO #TestTable VALUES ('C', 2);
SELECT * FROM #TestTable ORDER BY Column1,Column2;
DELETE <your solution here>
SELECT * FROM #TestTable ORDER BY Column1,Column2;