【问题标题】:Can I create a SQL Alias at the start of my query (Before SELECT and/or FROM)?我可以在查询开始时(在 SELECT 和/或 FROM 之前)创建 SQL 别名吗?
【发布时间】:2021-05-29 17:22:38
【问题描述】:

我正在通过 Coursera 上的 Google 数据分析课程学习 SQL。 虽然我了解使用 AS([原始名称] AS [新名称])临时重命名表和列的语法,但我不太确定我是否理解订单放置。他们在 Big Query 中提供了一个示例,如下所示。

1 SELECT
2  seasons.market AS university,
3  seasons.name AS team_name,
4  seasons.wins,
5  seasons.losses,
6  seasons.ties,
7  mascots.mascot AS team_mascot
8 FROM
9  `bigquery-public-data.ncaa_basketball.mbb_historical_teams_seasons` AS seasons
10 INNER JOIN
11  `bigquery-public-data.ncaa_basketball.mascots` AS mascots
12 ON
13  seasons.team_id = mascots.id
14 WHERE
15  seasons.season = 1984
16  AND seasons.division = 1
17 ORDER BY
18  seasons.market

基本上,让我感到困惑的是,当bigquery-public-data.ncaa_basketball.mbb_historical_teams_seasons 在第 9 行中被重新定义为“seasons”时,第 2 行如何为“seasons.market”获取正确的“table.column”地址。

说了这么多,我的问题是:是否有一个 SQL 函数只是为了建立别名而存在? 我知道上面的示例有效,但我很难将我的头脑围绕在读取第 1、9、2、3 行的程序上...... 我希望能够通过在顶部而不是中间插入相关且简洁的名称来开始我的查询。理想情况如下图。

[ALIAS ESTABLISHMENT FUNCTION]
   reallylongtablename1 AS tbl1
SELECT
   exampleColumnA
FROM
   tbl1

非常感谢!

【问题讨论】:

标签: sql syntax alias


【解决方案1】:

您可以使用 CTE:

with tbl1 as (
      select *
      from reallylongtablename1
     )
select exampleColumnA
from tbl1;

这更常用于复杂查询,而不仅仅是缩短表名。

至于您的第一个问题,这是关于如何在 SQL 查询中定义标识符的范围规则的问题。在SELECT 查询中,FROM 子句用于定义表别名和关联的列名。这些可以在其他子句中使用。

【讨论】:

  • 感谢您的帮助,@Gordon Linoff!我会花一些时间来试验一下。我相信这将是我理解别名分配的好方法。说任何与表相关的默认值都属于 FROM 是否过于简单化了?
  • @TheTravdrum 。 . .在SELECT 查询中,所有表引用都从FROM 子句开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 2021-05-20
  • 2019-08-05
  • 2018-05-12
  • 2018-04-08
  • 2015-04-17
  • 2018-08-07
相关资源
最近更新 更多