| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > Как из выборки убрать стобец |
| Автор: Artemon 13.7.2011, 12:51 | ||
| Есть запрос из таблицы, который кроме прочего, возвращается также столбец rownum, в котором содержится порядковый номер строки. Вопрос: Как это поле исключить из выборки ? Запрос примерно такой:
Но в ыборке rownum мне не нужен. |
| Автор: Zloxa 13.7.2011, 12:53 |
перечислить во внешнем подзапросе все поля выборки, опустив ненужное |
| Автор: Artemon 13.7.2011, 13:05 |
| Проблема в том, что я заранее не знаю какие стобцы в таблице. А этот изврат с rownum, нужен лишь для того, чтобы можно было делать выборку порциями (аналог MySql limit) |
| Автор: Zloxa 13.7.2011, 13:07 | ||
Просто как забава, не как решение
вроде б должно работать, если id not null Добавлено через 2 минуты и 59 секунд Да, проблемма именно в том, что вы не знаете какие столбцы в таблице. И именно эту проблему стоит решать, а не частные, вытекающие из нее последствия Если это нужно исключительно для клиенстких целей - что, в конце концов мешает отфильтрвать поле на клиенте? |
| Автор: Zloxa 13.7.2011, 17:09 | ||
Нет.. первоначальное зло, что в MySQL нет ансишного row_number и они выкрутились лимитом, стыренным, емнип у дибиту, а вы, в свою очередь недальновидно заложили свою архитектуру на использование этой фичи. Впрочем, лимит это не самое кардинальное отличие MySQL от Оракли. )) Самое "вкусное" - не столь очевидно |
| Автор: Artemon 14.7.2011, 11:05 | ||
Это что например ? Добавлено через 2 минуты и 42 секунды
Попробуй тут заложи, когда MSSQL Server использует для ограничения вывода TOP, MySql LIMIT, Oracle - RowNumber, остальные видимо еще что-то еще. И необходимо чтобы все это поддерживалось в одном продукте. Но я конечно изголился и сделал, и даже все работает корректно, но осадок остался. |
| Автор: Zloxa 14.7.2011, 11:50 |
совершенно, в корне разные принципы обеспечения изоляции транзакций. Все коварство этой разницы заключается в том, что кривизна становится заметной только под многопользовательской нагрузкой. Я всегда говорил что адекватный технический специалист врядли станет ратовать за абстрагирование от платформы бд. |
| Автор: Artemon 14.7.2011, 11:54 | ||
Раз уж начали эту тему, не моглибы показать живой примерчик такой кривизны ? |
| Автор: Zloxa 14.7.2011, 12:00 | ||
Как бы классика жанра:
при конкурентном доступе в режиме изоляции read commited на блокировочниках(MS SQL,MySQL) не будет приводить к появлению дублирущися id, на версионниках (Oracle,FB,PG) - запросто. |
| Автор: Artemon 14.7.2011, 12:11 |
| спасибо за пример |
| Автор: Artemon 14.7.2011, 13:30 |
| Zloxa, можешь посоветовать литературу по видам блокировок Oracle (и желательно MySql, MSSQL) ? |
| Автор: Zloxa 14.7.2011, 13:46 |
В том то и дело, что не блокировками одними обеспечиватесся согласованность в оракле. Основное и краеугольное отличие - чтение не блокирует запись, и, что более важно, запись не блокирует чтение. Согласованность чтений достигается тем,, что ханится история изменения данных. Именно по этому этот класс серверов и называется версионниками. Именно на этой фиче и вылез оракл. http://download.oracle.com/docs/cd/E11882_01/server.112/e16508/consist.htm#CNCPT020 Тут я и сам по верхам нахватамшись. |