|
|
|
Удаление одинаковых записей
|
|||
|---|---|---|---|
|
#18+
Опять я, со своими вопросами... Как реализовать на практике теорию: если последующая запись=предыдущей - удалить последующую запись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 10:53:28 |
|
||
|
Удаление одинаковых записей
|
|||
|---|---|---|---|
|
#18+
BobrovDmесли последующая запись=предыдущей - удалить последующую запись М.б. ее лучше вообще не вставлять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 11:30:03 |
|
||
|
Удаление одинаковых записей
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 2. Тебе сюда http://www.ibase.ru/devinfo/deldupes.htm Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 11:58:52 |
|
||
|
Удаление одинаковых записей
|
|||
|---|---|---|---|
|
#18+
Если записи полностью одинаковы - то нет критерия выборки для запроса... Грохнутся все одинаковые... По моему, нужно просто добавить в таблицу ID записи с автономерацией. Даже если ты его не используешь, то нихай оно себе живет... И тогда не будет проблем с указанием ID удаляемых записей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:03:24 |
|
||
|
Удаление одинаковых записей
|
|||
|---|---|---|---|
|
#18+
Если записи совершенно одинаковые то необходима хранимка с Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Внутри цикла проверяешь если последующая запись равна предыдущей то удаляешь ее при промощи: Код: plaintext 1. Второй вариант основан на внесении в таблицу нового поля и заполнение его возрастающим значением с генератора. Код: plaintext 1. 2. 3. 4. 5. А далее в голову лезет запрос наподобии : Код: plaintext 1. 2. 3. 4. 5. 6. НО ОН НЕ СРАБОТАЕТ !!!! особенность IB состоит в том что на каждую строку по которой движется DELETE выполнится вложенный запрос (результаты сам представишь :)) Эта особенность вытекает из архитектуры - потенциально любой вложенный запрос может вернуть огромный объем данных. по этому делается временная табличка куда переливаются данные вложенного запроса и выполняется удаление: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. На ювелирную точность и оптимальность не претендую Рассматривать только идеи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:37:35 |
|
||
|
Удаление одинаковых записей
|
|||
|---|---|---|---|
|
#18+
>olol >Если записи полностью одинаковы - то нет критерия выборки для запроса... >Грохнутся все одинаковые... Есть. Просто ты про него не знаешь. >Igor Elyas >Если записи совершенно одинаковые то необходима хранимка Не-а... Всем смотреть указанную ссылку ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:45:17 |
|
||
|
Удаление одинаковых записей
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Ух сколько ты написал. А я вот ленивый... Зато теперь на халяву пристроюсь.:) Если будет PK то вот так сработает DELETE FROM Table WHERE IDfield in ( Select MIN(IDfield) as MinID FROM TABLE GROUP BY oldField having count(IDfield) > 1 ) Именно потому, что в процессе сканирования подзапрос выполниться для каждой записи Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:53:18 |
|
||
|
Удаление одинаковых записей
|
|||
|---|---|---|---|
|
#18+
Ссылку я знаю :)) Учится это значит пытаться мыслить ширше :)) А вот грабли настоящие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:54:17 |
|
||
|
|

start [/forum/topic.php?fid=40&gotonew=1&tid=1578462]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
296ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 191ms |
| total: | 597ms |

| 0 / 0 |
