Sql WHERE子句中存在未知列错误

Sql WHERE子句中存在未知列错误,sql,Sql,为什么要这样问: SELECT SQL_CALC_FOUND_ROWS,a.*,(SELECT cy.iso_code FROM ps_address AS addr, ps_country AS cy WHERE addr.id_customer=a.id_customer AND addr.id_

为什么要这样问:

SELECT SQL_CALC_FOUND_ROWS,a.*,(SELECT cy.iso_code 
                                FROM ps_address AS addr, ps_country AS cy 
                                WHERE addr.id_customer=a.id_customer 
                                AND addr.id_country=cy.id_country) iso_code
FROM `ps_customer` a                        
WHERE iso_code='IT'                         
ORDER BY a.`id_customer` ASC
LIMIT 0,50
返回我:1054-where子句中的未知列“iso_代码”?

来自:

不允许在WHERE子句中引用列别名,因为在执行WHERE子句时可能尚未确定列值。看

不能在WHERE子句中使用列别名-只能使用在查询中使用的一个表中实际存在的列

你可以;然后您可以将标准应用于该表。

来自:

不允许在WHERE子句中引用列别名,因为在执行WHERE子句时可能尚未确定列值。看

不能在WHERE子句中使用列别名-只能使用在查询中使用的一个表中实际存在的列


你可以;然后您可以将条件应用于该表。

看起来iso_代码列来自ps_地址表,该表仅在您在主查询ps_客户的选择列表中进行的子查询的上下文中可用


此外,您不需要在主查询中使用WHERE语句,因为您已经在子查询中限制了iso_代码值。删除它就可以了。

看起来iso_代码列来自ps_地址表,该表仅在您在主查询ps_客户的选择列表中进行的子查询的上下文中可用


此外,您不需要在主查询中使用WHERE语句,因为您已经在子查询中限制了iso_代码值。删除它就可以了。

上面的SQL将不起作用,因为执行是按以下顺序开始的

FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
因此,列的别名将被指定为执行过程中的第二个最后一步,以及在此之前发生的位置。所以SQL引擎永远不会知道这里有什么iso_代码


希望这有帮助。

上述SQL将无法工作,因为执行将按以下顺序开始

FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
因此,列的别名将被指定为执行过程中的第二个最后一步,以及在此之前发生的位置。所以SQL引擎永远不会知道这里有什么iso_代码


希望这能有所帮助。

这也是我的第一个建议,但它是精选的。。。iso_代码这也是我的第一个建议,但它是精选的。。。iso_代码