在PostgreSQL的联接表达式中使用子字符串时出现语法错误

在PostgreSQL的联接表达式中使用子字符串时出现语法错误,sql,postgresql,join,postgresql-9.5,python-db-api,Sql,Postgresql,Join,Postgresql 9.5,Python Db Api,我正在使用Python DB API与postgresql合作 我使用的子字符串表达式在单独使用时工作良好,但当我将其放在join命令的上下文中时,会出现语法错误,在任何教程或其他问题中都找不到解决方法 我用的表达是 select substring(path, 10, 28) 'my_substr' from log limit 3") 它给出了结果 [('',), ('candidate-is-jerk',), ('goats-eat-googles',)] 这就是我想

我正在使用Python DB API与postgresql合作

我使用的子字符串表达式在单独使用时工作良好,但当我将其放在join命令的上下文中时,会出现语法错误,在任何教程或其他问题中都找不到解决方法

我用的表达是

    select substring(path, 10, 28) 'my_substr' from log limit 3") 
它给出了结果

    [('',), ('candidate-is-jerk',), ('goats-eat-googles',)]
这就是我想要的。(在此路径中修剪/articles/)

我想将其放置在一个连接表达式中,如下所示:

    select articles.author, articles.slug
    from articles 
    join log on articles.slug = substring(path, 10, 28) 'my_substr'
    from log 
如果我不需要子字符串,表达式将是

    join log on articles.slug = log.path,
但实际上,“路径”与“slug”不匹配,但在子字符串就位的情况下会匹配

我尝试过使用括号,在“my_substr”之前使用“as”,但都给出了相同的语法错误


如何使用正确的语法创建此表达式?

除了用于
选择的列列表之外,您不能也不需要在表达式中别名列表达式

您还有一个来自
的杂散

尝试:


最后,如果您使用别名,请不要将它们括在单引号(
)中,它们用于SQL中的字符串文本。如果需要在别名中使用特殊字符,请使用双引号(
”),否则根本不使用引号。

除了选择
的列列表之外,您不能也不需要在表达式中别名列表达式

您还有一个来自
的杂散

尝试:


最后,如果您使用别名,请不要将它们括在单引号(
)中,它们用于SQL中的字符串文字。如果您需要在别名中包含特殊字符,请使用双引号(
),否则根本不使用引号(

)。
“my_substr”
是该列的别名吗?如果是这样,那么您不需要在更新中使用它。只需删除它。
select articles.author,articles.slug from articles join log on articles.slug=substring(log.path,10,28)
字符串常量
my_substr
完全错误。假设这是一个别名:如果您需要使用双引号作为标识符。单引号仅用于字符串constantsIs
'my\u substr'
列的别名?如果是这样,那么您不需要在更新中使用它。只需删除它。
select articles.author,articles.slug from articles join log on articles.slug=substring(log.path,10,28)
字符串常量
my_substr
完全错误。假设这是一个别名:如果您需要使用双引号作为标识符。单引号仅用于字符串常量
SELECT articles.author,
       articles.slug
       FROM articles 
            INNER JOIN log
                       ON articles.slug = substring(log.path, 10, 28);