|
|
|
Сохранить при запросе порядок строк из подзапроса
|
|||
|---|---|---|---|
|
#18+
Допустим, есть такой запрос: Код: sql 1. 2. 3. Подзапрос упорядоченный. По каким полям — в общем случае, неизвестно. Модифицировать его нельзя (а то бы можно было бы пронумеровать строки в выборке и отсортировать основной запрос по этому номеру, но — нет). Обойтись без обёртки нельзя ввиду необходимости условий . Вопрос вот в чём: можем ли мы как-либо модифицировать основной запрос, чтобы в выборке строки гарантированно шли в том же порядке, в котором они выдаются подзапросом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 11:52 |
|
||
|
Сохранить при запросе порядок строк из подзапроса
|
|||
|---|---|---|---|
|
#18+
torbasow, нэтъ. Правда, не гарантированно они и так будут идти в том же порядке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 12:24 |
|
||
|
Сохранить при запросе порядок строк из подзапроса
|
|||
|---|---|---|---|
|
#18+
torbasow, единственный выход - второй order by снаружи, если его нет в виде возврата откуда-то, то надо его параллельно возвращать и потом приклеить к основному запросу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 12:26 |
|
||
|
Сохранить при запросе порядок строк из подзапроса
|
|||
|---|---|---|---|
|
#18+
torbasow, оберни через функцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 12:44 |
|
||
|
Сохранить при запросе порядок строк из подзапроса
|
|||
|---|---|---|---|
|
#18+
torbasow, если именно как подзапрос, и он НЕ требует сам по себе материализации [не агрегатный и не distinct]-- то даже порядок выполнения вы не можете гарантировать -- оптимайзер имеет полное право проигнорировать промежуточный order by вообще. и много что ещё сделать "не так, как написано" если вы сунете его (подзапрос) в with, то текущая реализация cte в постгресе его материализует. далее уже можете пытаться выдрать из него row_number(). стоит ли на это закладываться -- неясно. вдруг перепишут реализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2016, 13:10 |
|
||
|
Сохранить при запросе порядок строк из подзапроса
|
|||
|---|---|---|---|
|
#18+
qwwq, Ага, спасибо. Но row_number() тогда, наверное, уже ни к чему, если основной запрос будет выдавать выборку из CTE с сохранением её порядка,— разве что если потребуется ещё с чем-нибудь пересекать результаты запроса. Специфика нашего проекта такова, что нельзя совершенно исключить расчёт только на текущую реализацию. Это не идеальный, но рассматриваемый вариант. В связи с этим, не можете ли ткнуть ссылку на надёжное подтверждение такого поведения текущей реализации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2016, 09:45 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39161862&tid=1997470]: |
0ms |
get settings: |
15ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 212ms |
| total: | 397ms |

| 0 / 0 |
