mysql - MySQL 8 递归 CTE 错误代码:1054。未知列
问题描述
这个 MySQL 8 查询:
WITH RECURSIVE cte_count (n)
AS (
SELECT 1
UNION ALL
SELECT
n + 1
FROM cte_count
WHERE n < 3
)
SELECT *
FROM cte_count;
产生:
+------+
| n |
+------+
| 1 |
| 2 |
| 3 |
+------+
但是这个:
WITH RECURSIVE cte_count (n)
AS (
SELECT 1
,"one" as `one`
UNION ALL
SELECT
n + 1
,"one" as `one`
FROM cte_count
WHERE n < 3
)
SELECT *
FROM cte_count;
产生错误:
错误代码:1054。“字段列表”中的未知列“n”
你能解释一下为什么以及如何解决这个错误吗?
(n)
之后是什么意思WITH RECURSIVE cte_count
?
解决方案
有两种方法可以写这个。
没有在 cte 名称旁边声明列名:
WITH RECURSIVE cte_count
AS (
SELECT 1 as n
,'one' as `one`
UNION ALL
SELECT
n + 1
,'one'
FROM cte_count
WHERE n < 3
)
SELECT *
FROM cte_count;
并声明它们而不需要在查询正文中为它们加上别名:
WITH RECURSIVE cte_count (n, `one`)
AS (
SELECT 1
,'one'
UNION ALL
SELECT
n + 1
,'one'
FROM cte_count
WHERE n < 3
)
SELECT *
FROM cte_count;
推荐阅读
- django - Django + Vue.js 无法显示数据库中的图像
- ios - 无法手动将 dSYM 文件上传到 Firebase Crashlytics 4.0.0+
- bash - 从 Bash 脚本中,如何调用命令字符串中包含的 Linux 环境变量?
- javascript - 如何从 html5 画布中的文本创建虚线路径(当前使用 phaser.io)
- regex - 正则表达式:抓取在某个字符串之后开始并在遇到任何其他字符时结束的字符串
- html - 我的 CSS 有冲突。我如何找出这个冲突在引导程序中修复的位置?
- java - 在查询构建器中使用子字符串操作字符串
- python - SQLAlchemy 验证 - 什么是关键参数?
- sql - SQL:查询以获取特定列的值的最后更改
- typescript - 如何让打字稿认为已解决的承诺
作为 T 型