2015-05-19 3 views
0
sql> delete from emp where rowid not in (select max(rowid) from emp group by empno); 

Может ли кто-нибудь объяснить, что делает max (rowid)? Пожалуйста, объясните эту программу sqlУдаление повторяющегося ряда из таблицы

+0

Возможно, вы захотите сделать «группу за» со всеми столбцами и «count (1)» и добавить «на нем» (1)> 1 », чтобы вы обнаружили дубликаты. После этого вы можете разместить инструкцию для удаления перенастроенных четных или нечетных ронтумов. –

ответ

1

rowid - псевдо-столбец, доступный для всех строк в таблицах Oracle. Это действительно адрес строки, идентифицирующий страницу данных и смещение на странице данных.

Как и в случае с любым другим типом данных, вы можете взять максимальное значение. Итак, что это такое, вычисляем максимум rowid для каждого empno. Затем delete удаляет все строки, которые являются , а не одним из максимумов.

Это приводит к сохранению одной строки для каждого empno.

rowid сам вполне хорошо documented.

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