ERROR: syntax error at or near "." LINE 4: ON like.takerId = frame.likeId;
ERROR: syntax error at or near "." LINE 4: ON like.takerId = frame.likeId;
我有一个 table,名字是 like
。但是每当我需要 select 类似的数据时,我都会收到这个错误,我想通了 public.like
..但是当我尝试加入两个 tables
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;
我也使用 public 前缀但是它抛出
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
table 名称的问题,like
是 sql 语法,它假定 like
和 sql 语法并抛出错误。我应该更改我的 table 名字吗?或者有什么方法可以让 sql 区分大小写,或者我怎样才能告诉 sql 忽略 like
。 public.like
无法加入 table。
你绝对应该为你的 table 选择另一个名字。 LIKE
是一个保留命令,使用它被认为是一种不好的做法,尽管可以使用 "
,例如
CREATE TABLE public."like" (id int);
INSERT INTO public."like" VALUES (42);
SELECT * FROM "public.like"
编辑:正如@a_horse_with_no_name 所指出的,在临时 table 中指定模式将不起作用(检查 db<>fiddle
),因此只有 table 名称应该在双引号之间,如上面代码片段中更正的那样。对于临时 tables,只需省略架构:
CREATE TEMPORARY TABLE "like" (id int);
INSERT INTO "like" VALUES (42);
SELECT * FROM "like"
演示:db<>fiddle
由于 like
是保留关键字,您需要为它的每次出现使用 double quotes(除非它以您发现的模式名称为前缀)
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;
但是在长 运行 中,您应该为 table 找到一个不需要引号的不同名称。
我有一个 table,名字是 like
。但是每当我需要 select 类似的数据时,我都会收到这个错误,我想通了 public.like
..但是当我尝试加入两个 tables
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;
我也使用 public 前缀但是它抛出
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
table 名称的问题,like
是 sql 语法,它假定 like
和 sql 语法并抛出错误。我应该更改我的 table 名字吗?或者有什么方法可以让 sql 区分大小写,或者我怎样才能告诉 sql 忽略 like
。 public.like
无法加入 table。
你绝对应该为你的 table 选择另一个名字。 LIKE
是一个保留命令,使用它被认为是一种不好的做法,尽管可以使用 "
,例如
CREATE TABLE public."like" (id int);
INSERT INTO public."like" VALUES (42);
SELECT * FROM "public.like"
编辑:正如@a_horse_with_no_name 所指出的,在临时 table 中指定模式将不起作用(检查 db<>fiddle
),因此只有 table 名称应该在双引号之间,如上面代码片段中更正的那样。对于临时 tables,只需省略架构:
CREATE TEMPORARY TABLE "like" (id int);
INSERT INTO "like" VALUES (42);
SELECT * FROM "like"
演示:db<>fiddle
由于 like
是保留关键字,您需要为它的每次出现使用 double quotes(除非它以您发现的模式名称为前缀)
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;
但是在长 运行 中,您应该为 table 找到一个不需要引号的不同名称。