在不使用子查询的情况下加入派生列

Joining on derived column without using subquery

在 MySQL 中,我试图在派生列上连接两个 table,如下所示:

SELECT C.country, 
  IFNULL(C.preferred_city, C.default_city) AS best_city,
  PC.postal_code
FROM Countries as C
INNER JOIN PostalCodes AS PC
ON best_city=PC.city

这当然行不通,因为 best_city 超出了 ON 子句的范围。

我能找到的唯一解决方案是使用子查询(或者这被认为是派生的 table?我对命名法很模糊):

SELECT BC.*, PC.postal_code
FROM (
  SELECT country, IFNULL(preferred_city, default_city) AS best_city
  FROM COUNTRIES
) AS BC
INNER JOIN PostalCodes AS PC
ON BC.best_city=PC.city

从 shell 起效果很好。但是,我试图将其实现为一个视图,它给了我错误:错误 1349:视图的 SELECT 包含 FROM 子句中的子查询

如何在不使用子查询的情况下修改此连接?

谢谢!

试试这样的东西:

SELECT BC.*, PC.postal_code
FROM COUNTRIES BC
INNER JOIN PostalCodes AS PC
ON PC.city = IFNULL(preferred_city, default_city)