我正在运行的查询如下所示,但我得到了以下错误:

#1054-在/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子句中使用假列?

推荐答案

只能在GROUP BY、ORDER BY或HAVING子句中使用列别名.

标准SQL不允许您

抄袭自MySQL documentation

正如 comments 中所指出的,用have代替have可以完成这项工作.一定要阅读这个问题:WHERE vs HAVING.

Mysql相关问答推荐

S优化联接更新的最佳方式是什么?

我需要为用户提供MySQL视图和存储的 routine ,但不是基础表

当日期附加到MySQL后,如何按日期说明排序?

SQL MaxSum查询为列 Select 了不正确的值

无法确定查询逻辑

Hibernate 不创建表'

SQL查询连接到多个类别的项目

特定时间段内每个客户的运行总计

如果其中一个表为空,则 mysql 中的查询会给出 0 个结果

如何根据购买的商品数量查找 unique_ids 的数量

有人可以帮我用 R 编程解决这个问题吗?

SQL 根据多行值获取记录

为什么 fetch 方法不能获取任何东西?(feat node.js,restAPI)

MySQL 视图

在 MySQL 中,我应该 Select 哪种排序规则?

PHP MySQLI 防止 SQL 注入

按 15 分钟间隔对 mysql 查询进行分组

带有 OuterRef 的简单子查询

MySQL DAYOFWEEK() - 我的一周从星期一开始

MySQL导入数据库但忽略特定表