Sql “使用”部分中的“选择查询”中的Oracle标识符无效

Sql “使用”部分中的“选择查询”中的Oracle标识符无效,sql,oracle,oracle19c,Sql,Oracle,Oracle19c,为什么在此查询中出现无效标识符错误 具有 选择 notif\将\代码设置为通知\代码 , 选择选项卡\u到\u字符串 卡斯特罗克 案例 当区域类型不为空时,则 计数*| |“”| |面积| U型 否则为“默认” 终止 作为t_varchar2_tab,' 从我的表2 其中notif\u set\u code=nsd.notification\u code 地区 从我的表格nsd ... 它说nsd.U代码不是有效的标识符。 如果nsd.notif\U set\U代码不在with子句中,则使用n

为什么在此查询中出现无效标识符错误

具有 选择 notif\将\代码设置为通知\代码 , 选择选项卡\u到\u字符串 卡斯特罗克 案例 当区域类型不为空时,则 计数*| |“”| |面积| U型 否则为“默认” 终止 作为t_varchar2_tab,' 从我的表2 其中notif\u set\u code=nsd.notification\u code 地区 从我的表格nsd ... 它说nsd.U代码不是有效的标识符。
如果nsd.notif\U set\U代码不在with子句中,则使用nsd.notif\U set\U代码有效

据推测,nsd中没有名为notification_code的列。你似乎打算:

where notif_set_code = nsd.notif_set_code 
在select中重命名列不会改变任何东西,尽管MySQL似乎允许子查询中使用列别名,但这是一种异常情况

但是,您确实应该限定所有列引用:

where my_table_2.notif_set_code = nsd.notif_set_code

对于使用CTE的查询,这不是正确的语法。它应该采用q1作为选择…,q2作为选择。。。选择…如果我将列命名为通知\u代码,则我的\u表\u 2.notif\u set\u code=nsd.notif\u set\u代码因某种原因不起作用!正如我所说,它抱怨nsd.notif_设置代码。