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

时间:2015-03-02 16:19:22

标签: mysql join view subquery derived

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

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子句的范围。

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

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子句中的子查询

如何在不使用子查询的情况下重新加入此项?

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试类似:

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