|
|
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
Добрый день! Зашел в тупик, прошу помощи. Упрощенная модель задачи. В таблице есть два поля id1 и id2. Записи, в которых id1 || id2 = id2 || id1 считаются "двойниками" и нужно одну из них убрать (любую) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. Результат ID1 ID2 1 2 3 4 5 6 2 1 4 3 7 8 9 0 Нужно что бы осталось ID1 ID2 1 2 3 4 5 6 7 8 9 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 15:56 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
IgorD, Если не путаю, то отловить их можно так: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 15:59 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
londinium, отловить не проблема. У меня был такой вариант Код: plsql 1. 2. 3. 4. Нужно убрать по одной записи у двойников, а как, не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 16:03 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
less + group by + min ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 16:09 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
IgorD, Нужно вывести уникальную пару select-ом или удалить дубли из таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 16:11 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
AmKad, Нужно построить select таким образом, что бы там не было дублей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 16:15 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
... т.е. из двух дублирующих строк осталась одна (любая) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 16:16 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. + если есть null-ы, то допилишь сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 16:22 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
IgorD, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 16:29 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
least/greatest сменит ориентацию некоторым бирюкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 16:33 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
Без смены ориентации Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 16:36 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
IgorD Код: plsql 1. Это шутка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 16:51 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
Elic, это не решение, это подход, который оказался ошибочным. :) Знаю, что так делать нельзя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 17:08 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
Если серьезно, то было так to_char(id1) || ' -' || to_char(id2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 17:10 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
-2-least/greatest сменит ориентацию некоторым бирюкам. Только если оная присутствует (намек на NULL для тех кто не понял). SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2016, 21:29 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
IgorDЕсли серьезно, то было так to_char(id1) || ' -' || to_char(id2)Т.е. про expression list не слыхал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2016, 07:33 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
ElicIgorDЕсли серьезно, то было так to_char(id1) || ' -' || to_char(id2)Т.е. про expression list не слыхал? Не буду лгать - не использовал на практике. Почитал документацию, покрутил с вышеизложенным примером - не получилось. Буду рад, если выложите рабочий вариант, и я узнаю что-то новое для себя :) Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2016, 13:43 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
IgorDпокрутилПродемонстрируй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2016, 13:49 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
ElicIgorDпокрутилПродемонстрируй. Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2016, 14:00 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
Пробуй здесь:IgorD Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2016, 14:07 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
IgorD, Может я не понял вопрос, но что мешает написать что-то вроде: Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2016, 18:36 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
IgorD, Давайте все-таки определимся 1,1111 и 11,111 это двойники? Я понимаю, что по условиям упрощенной задачи это так, но вдруг в оригинале нет. А может и да... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2016, 22:48 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, Двойники считаются те строки в который одинаковые Id, в независимости от их размещения в колонках, т.е. 1 и 1111 двойники с 1111 и 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 11:24 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
Нетянепонял, Из двойников/тройников/... нужно оставить только одну запись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 11:27 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
в реальной задаче я решил задачу с помощью решения от AmKad Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 11:29 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
IgorD, ну да, одна запись и остается. Возвращает именно то, что хотелось: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. А "тройники" - это что? О них речи не шло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 14:49 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
НетянепонялIgorD, А "тройники" - это что? О них речи не шло. Имел ввиду любое количество записей с одинаковыми id И таки да :) - ваш вариант решает задачу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 15:29 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
IgorDИ таки да :) - ваш вариант решает задачуНо, как уже намекали, только на ограниченном множестве допустимых значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 15:32 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
Нетянепонял Вашу идею преобразил в такой вид и остался доволен :) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 15:43 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
AmKadIgorDИ таки да :) - ваш вариант решает задачуНо, как уже намекали, только на ограниченном множестве допустимых значений. Согласен. Меня радует множество вариантов решения задачи и огорчает, что я самостоятельно не нашел ни одного ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 15:50 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
НетянепонялIgorD, ну да, одна запись и остается. Возвращает именно то, что хотелось : Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. А "тройники" - это что? О них речи не шло. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 16:08 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
stax.., авторs.id1 || s.id2 - это не решение, это подход. Тут главное идея. А в реальной задаче лучше использовать или exists или в крайнем случае s.id1 || '-' || s.id2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 16:22 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
IgorDА в реальной задаче лучше использовать или existsСчитал, сколько обращений к таблице выполняет оптимизатор этом случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 16:25 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
AmKad, в своей задаче я остановился на применение аналитической функции row_number(). А вот с exists действительно надо бы проверить. Не задумывался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 16:32 |
|
||
|
Убрать записи двойники
|
|||
|---|---|---|---|
|
#18+
IgorDAmKadпропущено... Но, как уже намекали, только на ограниченном множестве допустимых значений. Согласен. Меня радует множество вариантов решения задачи и огорчает, что я самостоятельно не нашел ни одного ) мой варіант (мож уже и было) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2016, 17:04 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1886860]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
188ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 500ms |

| 0 / 0 |
