繁体   English   中英

嵌入选择语句的问题

[英]problems with embedding select statement

我试图在from子句中嵌入一条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不存在。

由于您正在执行以下操作: recipeclassdescription as classname ,因此需要在WHERE clause将该列引用为recipeclassdescription

子查询之外WHERE子句可以使用classname

问题是您已重命名该列。 但是,您可以大大简化查询:

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子句中无法识别列别名,因此您必须使用原始列名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM