2013-10-06 2 views
0

Возможно ли это? У меня есть таблица с двумя строками и 1 столбец. Оба строки имеют одинаковое значение. Нет первичного ключа. Можно ли удалить 1 строку?Как мы можем удалить одно значение из двух значений из таблицы?

+0

использование LIMIT 1 в конце вашего запроса –

+0

Вам следует рассмотреть вопрос о добавлении суррогатного ключа. –

ответ

0

вы можете сделать это используя функцию RANK().

или вы можете использовать ключевое слово TOP.

1

Вот один из способов сделать это с ROW_NUMBER() и common table expression:

with cte as (
    select *, 
    row_number() over (partition by id order by id) rn 
    from yourtable) 
delete from cte 
where rn = 1; 
+0

Я думаю, что rn изменить на rn> 1 лучше, чтобы обрабатывать более 1 значения дубликатов –

0

Вы можете получить фантазии и использовать CTE, чтобы удалить один, но если они и то же значение (и таблица так же проста, как вы ее описываете), вы также можете удалить оба и добавить один обратно. Гораздо проще.

Суррогатный ключ любой?

Смежные вопросы