У меня есть таблица, подобная этой.Как удалить повторяющуюся запись, которая имеет один уникальный столбец
Как я могу удалить записи «Джимми» и «Kenneth», который имеет большие значения Месяц.
спасибо.
У меня есть таблица, подобная этой.Как удалить повторяющуюся запись, которая имеет один уникальный столбец
Как я могу удалить записи «Джимми» и «Kenneth», который имеет большие значения Месяц.
спасибо.
delete from tablename t1 where exists (select 1 from tablename t2
where t1.name = t2.name
and t1.month > t2.month)
Но почему не учитывается год? Почему бы не использовать дату? Что делать, если два Jimmys с того же месяца? Почему нет единственного ограничения, если никакие дубликаты не разрешены?
Вы правы. Год должен быть рассмотрен. Я просто попытался сделать это более ясным и простым. – Den
Использование CTE
для удаления дубликатов записей
;with cte as
(
select Rn=row_number()over(partition by name,post order by month ASC),*
from yourtable
)
delete from cte where rn>1
если месяц столбец чисел попробовать это:
DELETE table
WHERE month = (SELECT Max(month)
FROM table
WHERE name = 'Jimmy')
AND name = 'Jimmy';
DELETE table
WHERE month = (SELECT Max(month)
FROM table
WHERE name = 'Kenneth')
AND name = 'Kenneth';
Вы можете использовать более раздел для того чтобы отделить самые большие значения в месяц:
SELECT *
FROM (SELECT *,
Row_number()OVER(PARTITION BY name, Post
ORDER BY Month DESC) AS RowNumber
FROM TABLE)
WHERE rownumber = 1
Используйте этот код ..
WITH tblTemp as(SELECT ROW_NUMBER() Over(PARTITION BY Name,Post ORDER BY Name)As RowNumber,* FROM <table_name>)DELETE FROM tblTemp where RowNumber >1
Это зависит от ** базы данных **, которую вы используете, можете ли вы ** TAG ** it –
Извините. Я забыл добавить его. Это Sql Server. Я отметил это. – Den