Есть ли способ удалить повторяющиеся строки из такой таблицы, не удаляя таблицу и не создавая ее заново с отдельными строками?
DROP TABLE IF EXISTS #temp;
CREATE TABLE #temp (id INT);
INSERT INTO #temp
VALUES (1), (2), (2), (2), (3), (3);
Решение проблемы
Использование CTE и ROW_NUMBER, сгруппированных по указанному столбцу, который вы просматриваете, может аккуратно удалить повторяющиеся значения, поскольку ROW_NUMBER подсчитывается постепенно с повторяющимися значениями агрегации PARTITION BY. Когда при упорядочении обнаруживается новая группировка, ROW_NUMBER сбрасывается до 1, начиная со следующей записи различных сгруппированных значений.
WITH CTE AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col1) AS RN
FROM #temp
)
DELETE FROM CTE WHERE RN<>1
Комментариев нет:
Отправить комментарий