首页 > 解决方案 > 错误:“。”处或附近的语法错误 第 4 行:在 like.takerId = frame.likeId 上;

问题描述

我有一张桌子,名字是like. 但是每当我必须从中选择数据时,我都会收到此错误,我想通了public.like..但是当我尝试加入两个表时

SELECT *
FROM frame
INNER JOIN public.like
ON like.takerId = frame.likeId;

我得到这个错误

ERROR:  syntax error at or near "."
LINE 4: ON like.takerId = frame.likeId;

我也使用公共前缀,但它抛出

ERROR:  column like.takerid does not exist
LINE 4: ON public.like.takerId = frame.likeId;
           ^
HINT:  Perhaps you meant to reference the column "like.takerId".

即使它在说column like.takerid does not exist,那为什么它给我HINT: Perhaps you meant to reference the column "like.takerId".我不知道,我认为这是like表名的问题,like是 sql 语法,它假设like和 sql 语法并抛出错误。我应该更改我的表名吗?或者有什么方法可以让 sql 区分大小写,或者我如何告诉 sql 忽略likepublic.like不适用于加入表。

标签: sqlpostgresqlquoted-identifier

解决方案


作为like保留关键字,您需要为它的每次出现使用双引号(除非它以您发现的模式名称为前缀)

SELECT *
FROM frame
  JOIN public.like ON "like".takerId = frame.likeId;

或者

SELECT *
FROM frame
  JOIN "like" ON "like".takerId = frame.likeId;

或使用别名

SELECT *
FROM frame f
  JOIN "like" l ON l.takerId = f.likeId;

但从长远来看,您应该为不需要引用的表找到一个不同的名称。


推荐阅读