gpt4 book ai didi

sql - 如何通过表别名选择自定义类型的属性?

转载 作者:行者123 更新时间:2023-11-29 12:10:34 27 4
gpt4 key购买 nike

有什么方法可以通过表别名在 PostgreSQL 中选择自定义类型列的各个属性?在不使用表别名的情况下,将列名用括号括起来就可以了。一旦引入表别名,我的查询就会因语法错误而失败。

我已经搜索了 Postgres 文档,但未能找到任何说明如何完成此操作的内容。这当然可能吗?

CREATE TYPE test_type AS (
some_text TEXT,
some_number INTEGER
);

CREATE TABLE test_table (
id SERIAL PRIMARY KEY,
some_test test_type NOT NULL
);

INSERT INTO test_table (some_test)
VALUES (ROW('SOME TEXT', 42));

-- This works great

SELECT id, (some_test).some_text, (some_test).some_number
FROM test_table;
┌────┬───────────┬─────────────┐
│ id │ some_text │ some_number │
├────┼───────────┼─────────────┤
│ 1 │ SOME TEXT │ 42 │
└────┴───────────┴─────────────┘

一旦引入表别名,您就无法选择自定义类型列中的各个属性

SELECT id, x.(some_test).some_text, x.(some_test).some_number
FROM test_table AS x;

ERROR: syntax error at or near "("
LINE 1: select id, x.(some_test).some_text, x.(some_test).some_numbe...
^

最佳答案

您需要将别名和列的组合放在括号中:

SELECT id, (x.some_test).some_text, (x.some_test).some_number
FROM test_table x;

关于sql - 如何通过表别名选择自定义类型的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38013485/

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