#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. Тогда есть небольшие вещи, которые мы можем сделать, чтобы угадать вашу ошибку, не имея данных и структуры таблицы. Подготовьте скрипку