我正在尝试在 MySQL Workbench 上运行此“WITH”查询:
WITH countUp AS (SELECT 1 as N
UNION ALL
SELECT n+1 FROM countUp WHERE n < 3)
SELECT * from countUp;
此递归选择的描述如下:https://builtin.com/data-science/recursive-sql。
但是工作台正在尝试将数据库名称附加到“countUp”上。向我显示以下错误:
错误代码:1146。表“my_test_database.countUp”不存在
如何禁用默认架构或至少为此查询禁用它?
您正在尝试在 MySQL 中使用递归 CTE 运行查询。
MySQL 的语法要求在 CTE 子句中添加关键字
RECURSIVE
,如下所示:
WITH recursive countUp AS (SELECT 1 as N
UNION ALL
SELECT n+1 FROM countUp WHERE n < 3)
SELECT * from countUp;
结果:
N
--
1
2
3
请参阅 db<>fiddle 处的运行示例。
如果没有
RECURSIVE
关键字,所有 CTE 都需要基于实际表。这就是 MySQL 试图告诉你的。