我正在使用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",但都给出了相同的语法错误。
如何使用正确的语法创建此表达式?
您不能也不需要在表达式中为列表达式指定别名,而不是SELECT
的列列表。
你那里也有一只流浪FROM
。
尝试:
SELECT articles.author,
articles.slug
FROM articles
INNER JOIN log
ON articles.slug = substring(log.path, 10, 28);
最后,如果您使用别名,请不要将它们括在单引号 ( '
中,这些用于 SQL 中的字符串文字。如果需要在别名中使用特殊字符,请使用双引号 ( "
),否则根本没有引号(没有别的)。