亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在MySQL查詢的WHERE子句中使用列別名會產生錯誤

在MySQL查詢的WHERE子句中使用列別名會產生錯誤

在MySQL查詢的WHERE子句中使用列別名會產生錯誤我正在運行的查詢如下所示,但是我得到了這個錯誤:#1054-‘IN/All/ANY子查詢’中未知列‘已保證的_郵政編碼’SELECT `users`.`first_name`, `users`.`last_name`, `users`.`email`,SUBSTRING(`locations`.`raw`,-6,4) AS `guaranteed_postcode`FROM `users` LEFT OUTER JOIN `locations`ON `users`.`id` = `locations`.`user_id`WHERE `guaranteed_postcode` NOT IN #this is where the fake col is being used(  SELECT `postcode` FROM `postcodes` WHERE `region` IN  (   'australia'  ))我的問題是:為什么我不能在同一DB查詢的WHERE子句中使用假列?
查看完整描述

3 回答

?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

只能在GROUPBY、ORDERBY或HAVING子句中使用列別名。

標準SQL不允許在WHERE子句中引用列別名。施加此限制是因為在執行WHERE代碼時,可能尚未確定列值。

抄襲MySQL文檔

正如注釋中所指出的,使用已代替可能完成工作。一定要看一下這個何去何從盡管如此。


查看完整回答
反對 回復 2019-06-29
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

正如維克多所指出的,問題在于化名。但是,可以避免這種情況,方法是將表達式直接放入WHERXINY子句中:

SELECT `users`.`first_name`,`users`.`last_name`,`users`.`email`,SUBSTRING(`locations`.`raw`,-6,4) AS `guaranteed_postcode`FROM `users` LEFT OUTER JOIN `locations`ON `users`.`id` = `locations`.`user_id`WHERE SUBSTRING(`locations`.`raw`,-6,4) NOT IN #this is where the fake col is being used(
 SELECT `postcode` FROM `postcodes` WHERE `region` IN
 (
  'australia'
 ))

但是,我想這是非常低效率的,因為子查詢必須對外部查詢的每一行執行。


查看完整回答
反對 回復 2019-06-29
  • 3 回答
  • 0 關注
  • 1334 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號