我试图在select子句中嵌入一条select语句,但收到一条错误消息。我无法理解问题所在。谁能帮我这个?我正在使用Postgres数据库。
select
r.recipetitle,
r.preparation,
rcfiltered.classname
from
(
select
recipeclassid,
recipeclassdescription as classname
from
recipe_classes as rc
where
rc.classname = 'Main course'
or rc.classname = 'Dessert'
) as rcfiltered
inner join recipes as r on rcfiltered.recipeclassid = r.recipeclassid;
错误消息是-列rc.classname不存在。
答案 0 :(得分:0)
由于您正在执行以下操作:recipeclassdescription as classname
,因此需要在recipeclassdescription
中将列引用为WHERE clause
。
classname
可用于子查询的外部子句中的WHERE
子句。
答案 1 :(得分:0)
问题是您已重命名该列。但是,您可以大大简化查询:
select r.recipetitle, r.preparation,
rc.recipeclassdescription as classname
from recipe_classes rc join
recipes r
on rc.recipeclassid = r.recipeclassid
where rc.recipeclassdescription in ('Main course', 'Dessert');
注意:
IN
而不是重复的OR
比较。WHERE
子句中无法识别列别名,因此您必须使用原始列名。