Как заказать ARRAY в Spanner - PullRequest
0 голосов
/ 31 января 2020

В документации для функции ARRAY_AGG ( link ) сказано, что элементы в массиве результатов будут в случайном порядке и что при разных запусках этот порядок может измениться.

Как заказать элементы в массиве?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Можно заказать массивы, но это будет зависеть от того, как вы хотите сделать заказ, и как использовать этот порядок. Я бы порекомендовал вам взглянуть на приведенную ниже документацию о том, как работать с массивами в Spanner.

Там вы найдете больше информации о том, как заказать его, и о доступных опциях.

Дайте мне знать, помогла ли вам информация!

0 голосов
/ 01 февраля 2020

Предложение ARRAY_AGG в Spanner в настоящее время не поддерживает ORDER BY

Так что, к сожалению, в настоящее время это не разрешено:

SELECT ARRAY_AGG (x ORDER BY x) FROM UNNEST ([2,1, 3,4,2, -1]) как x;

Хотя это разрешено, оно также не будет работать:

SELECT ARRAY_AGG (x) FROM (SELECT x FROM UNNEST ([2 , 1,3,4,2, -1]) как x ORDER BY x);

Доступны следующие варианты:

Если вы возвращаете результат ARRAY_AGG клиенту, результат можно отсортировать там

ИЛИ

Если вы должны вернуть данные в заказе, возможно, вам не нужно использовать ARRAY_AGG? В этом случае вы можете гарантировать заказ с помощью предложения ORDER BY. Это верно:

ВЫБРАТЬ x ОТ UNNEST ([2,1,3,4,2, -1]) как x ЗАКАЗАТЬ ПО x;

Ответ может измениться в будущем, поэтому рекомендуется снова проверить ARRA_AGG на c ( link ), если посмотреть на это время

...