首页 > 解决方案 > 字段列表中的未知列名(案例)- 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 嵌套查询,我正在寻找一种有效的方法来解决我的问题。

你有什么主意吗?

标签: mysqlsqltsql

解决方案


col=null检查是不可能的你需要is null所以它会像下面检查部分

SELECT * ,   

CASE WHEN t1.route is NULL THEN NULL ELSE left(t1.route,4) END AS node1,

和 node1 是列不能在这里使用

你可以使用子查询


推荐阅读