gpt4 book ai didi

sql - 我可以使用自定义类型字段加入吗?

转载 作者:行者123 更新时间:2023-11-29 14:18:00 24 4
gpt4 key购买 nike

有一个类型

CREATE TYPE map.get_near_link AS
(link_id integer,
distance integer,
sentido integer,
geom public.geometry(4));
ALTER TYPE map.get_near_link
OWNER TO postgres;

我的表有一个字段 near_link 并且这个工作:

SELECT (near_link).link_id
FROM avl_pool

但是如果我想加入我的 map 表以获取附加信息,我不能这样做

SELECT (near_link).link_id
FROM avl_pool a
JOIN map m
ON a.near_link.link_id = m.link_id

near_link 出错。

ERROR: missing FROM-clause entry for table "near_link" SQL state: 42P01 Character: 81

ON a.(near_link).link_id = v.link_id
^

ERROR: syntax error at or near "(" SQL state: 42601 Character: 83

有没有办法进行此连接,或者我应该先获取子查询以获取 link_id,就像这样?

WITH getLink as (
SELECT (near_link).link_id, *
from avl_pool a
)
SELECT *
FROM getLink g
JOIN map m
ON g.link_id = m.link_id

最佳答案

您需要将表别名放在连接条件的括号内:

SELECT (a.near_link).link_id
FROM avl_pool a
JOIN map m
ON (a.near_link).link_id = m.link_id;

括号是防止解析器将字段名解释为表名所必需的。

请参阅文档的“8.16.3. 访问复合类型”部分:https://www.postgresql.org/docs/9.3/static/rowtypes.html

关于sql - 我可以使用自定义类型字段加入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41229919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com