我正在阅读文档,并试图了解一些查询的底部。
这是一个同时具有t
和u
的查询
SELECT * FROM (VALUES 1, 2) t("left"), (VALUES 3, 4) u("right");
这里是另一个只使用t
:
SELECT * FROM (VALUES 5, 2, 4, 1, 3) t(x) ORDER BY x OFFSET 2 LIMIT 2;
还有这两个(注意t
和(
之间的空间(:
SELECT student, score
FROM tests
CROSS JOIN UNNEST(scores) AS t (score);
FROM (
VALUES
(ARRAY[2, 5], ARRAY['dog', 'cat', 'bird']),
(ARRAY[7, 8, 9], ARRAY['cow', 'pig'])
) AS x (numbers, animals)
CROSS JOIN UNNEST(numbers, animals) AS t (n, a);
这里t(sites)
被描述为别名。
FROM dataset, UNNEST(items) AS t(sites)
我在谷歌上搜索了好几个小时。我希望有更多SQL经验的人能给我推荐有用的搜索字符串。
- u和t都是预定义的别名吗
- 别名是什么意思
- 我是否需要使用别名的括号
- 这个字符和括号之间的空格有什么特殊的含义吗
我的DWH团队帮助了我。这些是与列名组合的别名。当你知道的时候,这似乎微不足道。
第一个例子:
SELECT * from (VALUES 1, 2) t("x")
像这样写的可能更容易理解
SELECT * from (VALUES 1, 2) as t("first")
(VALUES 1, 2) as t("first")
创建了一个包含一列和两行的表。该表的别名为t
,列名为first
。
SELECT * from (VALUES (1,3), (2, 4)) as t("first", "second")
提供两行类似
# first second
1 1 3
2 2 4
- 它们不是预定义的别名,而是普通别名
- NA
- 如果无法从表中推断出列名,则需要它们
- 否