|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
Привет, есть таблица. Например у нее одно поле, id. И в нем есть дубли. 1 2 3 3 4 5 6 7 7 8 9 10 ... Ну вы поняли. Как удалить по одному дублю? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 16:09 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
id повторяется и удалятся будет по 2 строки.... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 16:12 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ЖEHbKA, Это традиционная задача на собеседовании программиста БД. Ее нужно решить как минимум двумя способами. Сделайте выводы о своей профпригодности. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 16:25 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
чсв чсв чсв ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 16:32 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ЖEHbKA, в пж есть служебные поля: https://postgrespro.ru/docs/postgresql/9.5/ddl-system-columns если бы их не было -- можно добавить ещё одно поле, и заполнить его (например в for loop-е) возрастающими значениями ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 18:41 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ЖEHbKA, надеюсь, это не задачка на вакансию? (беги с этого собеседования.) Нормальный работодатель даёт задачи, приблизительно связанные с деятельностью фирмЫ. Тут или он не знает чего хочет(а всех собак на тебя), или у них серьёзные проблемы с архитектурой. ЗЫ А вообще, такие задачки надо делать самому. Минимум, двумя способами можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 18:53 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
qwwqЖEHbKA, в пж есть служебные поля: https://postgrespro.ru/docs/postgresql/9.5/ddl-system-columns если бы их не было -- можно добавить ещё одно поле, и заполнить его (например в for loop-е) возрастающими значениями Луп тут нафиг не упал, но можно и лупом. Короче, считаем ещё 2 способа. Итого 4 минимум)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 18:56 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ОКТОГЕН... Нормальный работодатель даёт задачи, приблизительно связанные с деятельностью фирмЫ ... Вполне обычная жизненная задача. Чаще всего - отработка ошибок оператора, обмена данными и т.п. Например: Оператор загрузил тарифы по некоторым регионам дважды. Они различаются примерно на пол-часа только по времени загрузки. Никакой ошибки нет. Но мусор все же лучше вычистить. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 19:11 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ОКТОГЕН... Итого 4 минимум)))) Не-не-не! Давайте считать только чистый SQL без привлечения процедур. Можно еще спросить: метод в рамках стандарта SQL или применяет специфические для PostgreSQL методы. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 19:17 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ОКТОГЕНqwwq<> добавить ещё одно поле, и заполнить его (например в for loop-е) возрастающими значениями Луп тут нафиг не упал<> зачем отвлекаться на особенности добавления поля с дефолтным сиквенсом в определении. но настоясчему поцгрессисту таки равнение на ctid[,+tableoid] ближе. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 20:07 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ursidoОКТОГЕН... Нормальный работодатель даёт задачи, приблизительно связанные с деятельностью фирмЫ ... Вполне обычная жизненная задача. Чаще всего - отработка ошибок оператора, обмена данными и т.п. Например: Оператор загрузил тарифы по некоторым регионам дважды. Они различаются примерно на пол-часа только по времени загрузки. Никакой ошибки нет. Но мусор все же лучше вычистить.неа, тут есть отличие по времени загрузки. задача уже не о полностью идентичных рекордах. обычна она только у тех, у кого архитектура набекрень, и кто об уникъю не слышал. (более широко -- и об екслюдах тоже ) в случае вашего ойператора нужен уникью на регион и дату тарифа, и определиться с политикой разрешения коллизии -- перекрывать или откатывать, или же дать кноббку выбора дурню в руки (или же по выбору на каждую строку заливки, пока не надоест крыжики открыживать), воплотив оное в проце,дуре(ах) заливки. всё. и никаких sql--пассов руками на. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2017, 20:24 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
qwwq... в случае вашего ойператора нужен уникью на регион и дату тарифа, и определиться с политикой разрешения коллизии ... Со стороны владельца системы все видится иначе: Разовые ручные действия по устранению редких ошибок (хотя это не ошибка) обходятся ему гораздо дешевле напряженной работы всей толпы IT-отдела по обработке всех вариантов. Владелец системы прав: это его деньги, его система, именно он формулирует проблему. "Кривая архитектура" - слишком сильное утверждение. Потому что даже кривая архитектура приложения позволяет владельцу генерировать прибыль и оплачивать все капризы разработчиков и ее дальнейшее улучшение. Поэтому первый вопрос на собеседовании кандидата: -- Пожалуйста, напишите (ручкой на бумажке) запрос удаления дубликатов из таблицы представленной структуры. А теперь напишите другим способом. Следующий вопрос: -- Выберите все строки из мастер-таблицы, для которых отсутствуют данные в деталь-таблице. Опять же ручной на бумажке. И еще вторым способом. Обычно у адекватного кандидата эти вопросы занимают не более 20 минут и одного листа А4. Из них 5 минут - подавление удивления от странного устройства: ручка и бумага. Многие забыли когда пользовались последний раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 10:25 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ursidoРазовые ручные действия по устранению редких ошибок (хотя это не ошибка) обходятся ему гораздо дешевле напряженной работы всей толпы IT-отдела по обработке всех вариантов. https://www.anekdot.ru/id/334092/ или "бешенной собаке семь верст не крюк" само существование развесистого айти отдела (с девелоперами, а не токмо одминами ) у пользователя (а не разработчика) -- свидетельство низкой готовности (плохого качества) используемых решений. но это другая сторона медали -- решение можно продать один раз. а исправление ошибок , сиречь "поддержку" -- продают бесконечно. особо хорошо это известно франчам 1С (устранение багов в обновлениях и сшивка обновлений с наколенными кривыми поделиями франчей -- вечный хлебушек). так же и ойти отдел у потребителя существует (в количествах) до тех пор, пока есть ещё много мест, где многими (хотя бы 2--мя) способами собачка (ойтишнег) может полизать свои ядрышки. правильная архитектура экономит усилия, а не наоборот. это как вопрос, как дешевле строить мост -- вдоль реки, или всё ж таки поперёк. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 13:06 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
qwwq, Если про сферического коня в вакууме - то все верно. Но есть разница между "теоретически" и "практически" (опять же два варианта анекдота по этому поводу). Главный вопрос: "хорошая архитектура" -- это навсегда или на какой-то срок. Как осуществляется переход от одной "хорошей архитектуры" к другой "очень хорошей архитектуре". Что делают в пути. Что лучше: идеальный продукт когда-то потом или удовлетворительный с известными ошибками но сейчас. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 13:27 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
Ребята, это было чисто практическое задание. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 13:46 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ЖEHbKA, Да. И Вы с ним не справились. Ваше мнение очен важно для нас. Оставьте свой номер телефона. Мы Вам обязательно перезвоним. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 13:49 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ursidoqwwq, *** Что лучше: идеальный продукт когда-то потом или удовлетворительный с известными ошибками но сейчас. "Лучшее - враг хорошего". Хотя, всё дело в цене ошибок. Переделывать гораздо дороже, чем лишний раз хорошенько всё продумать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 14:21 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ursidoДа. И Вы с ним не справились. Еще на момент написания первого поста в этой теме уже адалил дубли по ctid, однако пришлось блок DO писать чтобы не по одному удалять. Меня интересовало изящное решение по удалению сразу всех дублей по всей таблице без использования PSQL, только средствами SQL. Пока еще актуально. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 14:44 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ЖEHbKAЕще на момент написания первого поста в этой теме уже адалил дубли по ctid, однако пришлось блок DO писать чтобы не по одному удалять. Меня интересовало изящное решение по удалению сразу всех дублей по всей таблице без использования PSQL, только средствами SQL. Пока еще актуально. А почему бы не запилить транзакцию, в которой создать такую таблицу, и не поэкспериментировать с SQL? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 14:53 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ЖEHbKA, БЛДЖАД! Прямой поиск в любимой поисковой системе выдал туеву хучу ссылок с готовыми расписанными решениями. Из первых пяти ссылок две были на sql.ru. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 14:54 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ЖEHbKAursidoДа. И Вы с ним не справились. Еще на момент написания первого поста в этой теме уже адалил дубли по ctid, однако пришлось блок DO писать чтобы не по одному удалять. Меня интересовало изящное решение по удалению сразу всех дублей по всей таблице без использования PSQL, только средствами SQL. Пока еще актуально.кхм. бедность воображения и незнание скл можно компенсировать трудом и перебором вариантов. как вам тут уже верно предложили. рано или поздно станет например ясно, чтаааа достаточно сказать что нить типа Код: plaintext 1. 2.
если же не бояццо потереть (внутри транзы) всё (нет рилейшенов) -- то просто перезалейте табличку дистинктным набором её же записей. -- накладные -- лишние версии, что плохо в пж ,но не настолько, если табла невелика. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 15:27 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
ОКТОГЕНursidoqwwq, *** Что лучше: идеальный продукт когда-то потом или удовлетворительный с известными ошибками но сейчас. "Лучшее - враг хорошего". Хотя, всё дело в цене ошибок. Переделывать гораздо дороже, чем лишний раз хорошенько всё продумать.пока проблема неосознанна -- можно и лепить горбатого. но упоротствовать в леплениии горбатого (отказываться от уникью), когда решение (уникью или ексклюд по ренджам) уже очевидно -- это что-то религиозное. за такое надо сжигать на кострах или хотя бы душить окладами. каламбур ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 15:32 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
qwwq... когда решение (уникью или ексклюд по ренджам) уже очевидно... Именно этот момент и нужно обосновать тому кто предлагает решение. Уникальным оно было вчера и где-то там. Здесь и сейчас ситуация может быть другой. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 15:38 |
|
как удалить дубли абсолютно одинаковых строк?
|
|||
---|---|---|---|
#18+
qwwqдостаточно сказать что нить типа Код: plaintext 1. 2.
то что внутри не так-то просто сделать как кажется :) чтобы не по одному дублю удалять а все сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2017, 15:44 |
|
|
start [/forum/topic.php?fid=53&msg=39459135&tid=1996493]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 458ms |
0 / 0 |