|
Удаление дубликатов строк из таблицы
|
|||
---|---|---|---|
#18+
Добрый день. Имеется таблица (PostgreSQL 9.4): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Нужно удалить дубликаты по полю tid, оставив только одну, т.е. чтобы в таблице осталась только строка со значениями (tid=1, id=1). Придумал запрос: Код: sql 1. 2. 3.
Но такой запрос удаляет все строки из такой таблицы. В итоге был найден другой запрос, который делает то что нужно: Код: sql 1. 2. 3. 4. 5.
Вопрос вот в чем. Первый запрос я тестировал в БД Firebird (2.1) - там он удалял все строки кроме одной, то есть делал то что надо. А в PostgreSQL удалились почему-то все строки с одинаковым значением поля tid. Я понимаю что это разные СУБД, но в чем причина такого разного поведения одного запроса? Где можно подробнее узнать/помотреть/почитать про этот момент? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 10:59 |
|
Удаление дубликатов строк из таблицы
|
|||
---|---|---|---|
#18+
fortress, Кажется это вчера был день пьяных школьников. И он уже закончился. Не? Читайте здесь: 20512654 Так же поищите в любимом поисковике по словам: "sql удаление дубликатов" Ваша проблема: Первый запрос характерен именно для Interbase/Firebird. В этой БД результат подзапроса может зависеть от действий вызывающего запроса. Поэтому в другой БД этот запрос не пройдет. Поэтому нужно тщательно изучать особенности своей рабочей БД. Четко понимать что является спецификой поведения, а что стандартом. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2017, 11:16 |
|
|
start [/forum/topic.php?fid=53&msg=39460261&tid=1996489]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 123ms |
0 / 0 |