在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子句中的子查询
如何在不使用子查询的情况下重新加入此项?
谢谢!
答案 0 :(得分:0)
尝试类似:
SELECT BC.*, PC.postal_code
FROM COUNTRIES BC
INNER JOIN PostalCodes AS PC
ON PC.city = IFNULL(preferred_city, default_city)