where后面不能加别名吗

select  substr(cpjh,8,1) jyb,dcqzl from l2l3pdo_data

where substr(ENDCOILING,1,4)=substr('${today_}',1,4)

${if(len(bz)==0,"","and substr(cpjh,8,1)='"+bz+"'")}

order by jyb

其中  "and substr(cpjh,8,1)='"+bz+"'"  不能写成 "and jyb='"+bz+"'"   为什么啊?order by 后面就可以用别名, where后面不能用别名。

FineReport 用户k3347132 发布于 2020-10-8 08:38
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
zsh331Lv8专家互助
发布于2020-10-8 08:45(编辑于 2020-10-8 08:46)

楼主:#这是关于SQL执行《优先级》问题,如果你能理解SQL执行优先级,就知道为什么了#


( 8 ) SELECT

( 9 ) DISTINCT 

( 11 ) < Top Num > < select list > 

( 1 ) FROM [ left_table ] 
( 3 ) < join_type > JOIN < right_table > 
( 2 ) ON < join_condition > 
( 4 ) WHERE < where_condition > 
( 5 ) GROUP BY < group_by_list > 
( 6 ) WITH < CUBE | RollUP > 
( 7 ) HAVING < having_condition > 
( 10 ) ORDER BY < order_by_list >


  • 用户k3347132 用户k3347132(提问者) 明白了,执行where的时候,select的别名还没生成呢。
    2020-10-08 16:49 
  • zsh331 zsh331 回复 用户k3347132(提问者) bingo
    2020-10-08 16:54 
  • 2关注人数
  • 257浏览人数
  • 最后回答于:2020-10-8 08:46
    请选择关闭问题的原因
    确定 取消
    返回顶部