У меня есть некоторые данные в виде таблицы, которая выглядит примерно так:удаления дубликатов строки, без уникального идентификатора
table stockData
(
tickId int not null,
timestamp datetime not null,
price decimal(18,5) not null
)
Ни tickId, ни временная метка является уникальными, однако сочетание tickId и меток времени должны быть уникальными ,
У меня есть несколько повторяющихся данных в моей таблице, и я пытаюсь удалить их. Тем не менее, я прихожу к выводу, что данных с данными не хватает, чтобы я различал одну строку от другой, и в основном мне не удавалось удалить только одну из повторяющихся строк. Я предполагаю, что мне нужно будет ввести какой-то столбец идентификаторов, который поможет мне идентифицировать одну строку от другой.
Правильно ли это, или есть какой-то волшебный способ удаления одного, но не двух дублированных данных с запросом?
EDIT Отредактировано для уточнения того, что команда tickId и timestamp combo должна быть уникальной, но это происходит не из-за дублирования данных.
Просто идея, я не знаю, если он работает, или если он будет удалять как: DELETE FROM WHERE stackData tickId IN (SELECT tickId FROM stackData); –
С SQL Server 2005 существует волшебный способ удалить только один из дубликатов. Какую версию SQL-сервера вы используете? После устранения дублированной проблемы вы должны добавить ограничение первичного ключа в таблицу. –
Спасибо Mikael, я использую SQL Server 2005. У меня было уникальное ограничение, однако я объединил данные из нескольких таблиц в одну таблицу, и эти таблицы имели повторяющиеся данные. Я решил, что самый простой способ - просто свалить все в одну таблицу, удалить обманы, а затем добавить ограничение после. – steve8918