|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
Всем привет! Классическая задачка - удалить дубли. Код: plsql 1. 2. 3. 4. 5. 6. 7.
Выполним группировку по полю id, возьмём max по rowid, а далее удалим все записи у которых rowid не входит в полученный нами набор. Перед этим посмотрим, какие записи отбираются. Первый вариант, используем функцию group by Код: plsql 1. 2. 3. 4. 5.
Все ок! Строки возвращаются. Второй вариант, попробуем использовать аналитическую функцию: Код: sql 1. 2. 3.
Запрос ничего не возвращает! Хотя набор rowid в подзапросе присутствует. Если убрать условие not, оставить только проверку на вхождение, то запрос возвращает записи. Почему второй вариант, с использованием not in, не возвращает записи? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 12:27 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
Landgraf, ибо - NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 12:44 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
Щукина АннаLandgraf, ибо - NULL А где там null получается? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 12:52 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 12:53 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
LandgrafЩукина АннаLandgraf, ибо - NULL А где там null получается?это невнимательность. Увидев NOT IN и "не возвращает данные", подумалось про NULL. А перед тем как думать - нужно ещё было и до конца ваш пост дочитать... :) З.Ы. Версия oracle, кстати, какая? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 12:57 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
Landgraf, план с прожекцией посмотри. потом добавь алиасы таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 12:58 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
Landgraf, "полечить" можно "материализаций" подзапроса. к примеру, при помощи where rownum >= 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 13:01 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
Landgraf, как-то так: Код: plsql 1. 2. 3.
Причины -2- озвучил... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 13:02 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
Щукина АннаLandgraf, как-то так: Код: plsql 1. 2. 3.
Причины -2- озвучил... Так работает. А в чем суть такой проблемы, так сказать особенность такого поведения? Первый раз с таким столкнулся. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 13:19 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
LandgrafТак работает. Уж ежели непременно not in, то хотя бы так: Код: plsql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 15:09 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
andrey_anonymous Код: plsql 1. 2.
Наврал. Having не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 15:10 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
LandgrafЗапрос ничего не возвращает! Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 15:51 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
StaxLandgrafЗапрос ничего не возвращает! Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production Ну глюканул CBO у коллеги, бывает. Лучше бы отметили неуместность использования аналитики в подобной конструкции... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 15:55 |
|
Не отбираются записи при условии Rowid not in
|
|||
---|---|---|---|
#18+
andrey_anonymousЛучше бы отметили неуместность использования аналитики в подобной конструкции... удаление дублей, я посчитал как пример глюка в реальности мож они что-то другое делают (решают), напр оставить не больше трех строк ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 18:09 |
|
|
start [/forum/topic.php?fid=52&fpage=87&tid=1882900]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 138ms |
0 / 0 |