Чтобы удалить один из дубликатов в SQL, вы можете использовать различные методы в зависимости от ваших конкретных требований и структуры вашей таблицы. Я предоставлю вам несколько распространенных подходов вместе с примерами кода. Обратите внимание, что примеры предполагают базовое понимание синтаксиса SQL и структуры вашей таблицы.
Метод 1: использование временной таблицы
-- Step 1: Create a temporary table with a distinct copy of the data
SELECT DISTINCT *
INTO #TempTable
FROM YourTable;
-- Step 2: Delete the original table
DELETE FROM YourTable;
-- Step 3: Insert the distinct records from the temporary table back into the original table
INSERT INTO YourTable
SELECT *
FROM #TempTable;
-- Step 4: Drop the temporary table
DROP TABLE #TempTable;
Метод 2: использование общего табличного выражения (CTE)
-- Step 1: Create a CTE with row numbers for each record, ordering by your criteria (e.g., primary key)
WITH CTE AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY DuplicateColumn ORDER BY PrimaryKeyColumn) AS RowNumber
FROM YourTable
)
-- Step 2: Delete the duplicate records where RowNumber is greater than 1
DELETE FROM CTE WHERE RowNumber > 1;
Метод 3. Использование предложения EXISTS
-- Step 1: Delete the duplicate records using the EXISTS clause
DELETE FROM YourTable
WHERE EXISTS (
SELECT 1
FROM YourTable T2
WHERE YourTable.DuplicateColumn = T2.DuplicateColumn
AND YourTable.PrimaryKeyColumn > T2.PrimaryKeyColumn
);
Метод 4. Использование функции МИН или МАКС
-- Step 1: Delete the duplicate records based on a specific criterion (e.g., minimum value of PrimaryKeyColumn)
DELETE FROM YourTable
WHERE PrimaryKeyColumn NOT IN (
SELECT MIN(PrimaryKeyColumn)
FROM YourTable
GROUP BY DuplicateColumn
);
Это всего лишь несколько примеров того, как можно удалить дубликаты в SQL. Не забудьте изменить имена таблиц и столбцов во фрагментах кода в соответствии с вашим конкретным сценарием.