mysql - 字段列表中的未知列名(案例)- MySQL
问题描述
我正在努力查询mysql数据库。以下是我整个更长的查询的示例:
SELECT * ,
CASE WHEN t1.route = NULL THEN NULL ELSE left(t1.route,4) END AS node1,
CASE WHEN node1 = NULL THEN NULL ELSE CASE WHEN CHAR_LENGTH(node1) = CHAR_LENGTH(route) THEN NULL ELSE SUBSTRING(route,6,4) END END AS node2
FROM (SELECT *, [...] FROM main_db) t1;
当我在 mysql 工作台上运行它时,会出现此错误:
Error Code: 1054. Unknown column 'node1' in 'field list'
我注意到我的代码在 TSQL 数据库上完美运行,但在 MYSQL 上却没有,我认为问题是在 mysql 执行每个操作后,它不会更新列列表,因此,我无法从创建的列中查询在同一个声明中。
我以前通过在另一个查询中嵌套查询来解决此类问题,但由于我不想有或多或少的 14/16 嵌套查询,我正在寻找一种有效的方法来解决我的问题。
你有什么主意吗?
解决方案
col=null
检查是不可能的你需要is null
所以它会像下面检查部分
SELECT * ,
CASE WHEN t1.route is NULL THEN NULL ELSE left(t1.route,4) END AS node1,
和 node1 是列不能在这里使用
你可以使用子查询
推荐阅读
- reactjs - 使用 Typescript 的 React-Redux 提供者推理?
- python - 模块“熊猫”没有属性“tslib”
- c# - 我可以在一台机器上同时使用 Visual Studio 2010 和 2017 的 Crystal Report 吗?
- oracle - 使用显式游标和循环,找不到错误
- ios - 无法加载搜索结果 - Google 地方信息
- python-imaging-library - 为什么 favicon 形状为 16x16x4,whatsapp favicon 有什么问题?
- python - Python按列名获取熊猫数据
- go - 使用通道的 MapReduce 任务
- matlab - 在 matlab 中,我们通过 A\B 计算 inv(A)* B。朱莉娅呢?请注意,A&B 是两个大型稀疏矩阵
- amazon-web-services - AWS CLI:aws s3 presign 不适用于 ap-east-1(香港)区域(“位置约束与区域特定端点不兼容”)