Таблица не существует в подзапросе with

#mariadb #mariadb-10.4

#mariadb #mariadb-10.4

Вопрос:

У меня есть база данных MariaDB. Я запускаю запрос With.

когда я запускаю приведенный ниже запрос, он выдает ошибку о том, что таблица t1 не существует

 with t1 as (select 't1'),

block1 as (

   with inner1 as (
     select * from t1
   )

   select * from inner1
   
),

block2 as (
  
  with b2inner1 as(
    select * from block1
  ),

  b2inner2 as(
    select * from block1
  )
  
  select * from b2inner2

)
select * from block2;
  

Однако, если я удалю блок2, запрос сработает.

 with t1 as (select 't1'),

block1 as (

   with inner1 as (
     select * from t1
   )

   select * from inner1
   
)

select * from block1;
  

Мой вопрос в том, что я не использовал t1 в подзапросе block2, тогда почему запрос выдает ошибку.

Я думаю, что ошибка возникает из-за того, что я дважды выбираю результат блока1 в запросе блока2. dbfiddle

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

1. Начните с попытки добавить РЕКУРСИВНОЕ ключевое слово после WITH. Ваш CTE рекурсивен, поскольку ссылается на себя.

2. Даже если я использую рекурсивный, произошла та же ошибка.

3. Тогда есть небольшие вещи, которые мы можем сделать, чтобы угадать вашу ошибку, не имея данных и структуры таблицы. Подготовьте скрипку