Presto Sql- Несколько операторов объединения -оператор слишком большой (переполнение стека во время анализа)

#presto

#presto

Вопрос:

Я пытаюсь создать таблицу presto, используя множественное объединение all в sql, в результате чего оператор слишком большой (переполнение стека во время анализа)

выберите 1 в качестве идентификатора, ‘x’ в качестве объединения имен all выберите 2 в качестве идентификатора, ‘x’ в качестве объединения имен all

выберите 1000 в качестве идентификатора, ‘x’ в качестве имени

Ответ №1:

Укажите, что x похоже на неизменяемое статическое значение для name, вы могли бы попробовать использовать последовательность здесь:

 WITH cte AS (
    SELECT s.n AS id, t.name
    FROM (SELECT 'x' AS name) t
    CROSS JOIN UNNEST(sequence(1, 1000)) s(n)
)
  

При этом, если бы вы хотели придерживаться вашего текущего подхода к объединению методом грубой силы, вы могли бы сократить длину, удалив as name псевдоним в каждом выборе. Вам нужно указать этот псевдоним только один раз, поэтому я предлагаю попробовать:

 WITH cte AS (
    SELECT 1 as id, 'x' AS name UNION ALL
    SELECT 2, 'x' UNION ALL     -- no aliases needed from here onwards
    ...
    SELECT 1000, 'x'
)
  

Комментарии:

1. Значение ‘X’ изменится. Я пытался удалить псевдоним в каждом выборе и указывал только один раз. Это не сработало.