【问题标题】:SQL Query with Alias and Re-use it. How does it work?使用别名进行 SQL 查询并重新使用它。它是如何工作的?
【发布时间】:2016-07-12 11:04:54
【问题描述】:

我有一些查询,例如使用别名“as”:

select (TABLE_A.NAME) as NAME_A from TABLE_B where id = 1

我要做的是重新调用/重新使用NAME_A 作为下一列,例如:

select (TABLE_A.NAME) as NAME_A, (NAME_A+"ME") as NAME_B from TABLE_B where id = 1

我该怎么做?

【问题讨论】:

  • 我猜你不能。顺便说一句,(NAME_A+"ME") 你要连接吗?
  • 这只是举例......关键是我只想为下一列重新调用 NAME_A
  • @Diastowo 。 . .不,您不能在同一 select 中重复使用列别名(也不能在 fromwhere 中)。为此目的使用子查询或 CTE。

标签: mysql sql sql-server


【解决方案1】:

您不能在同一个选择列表中引用选择列表别名。正如select list aliases 上的 MySQL 文档所说:

可以使用 AS alias_name 为 select_expr 指定别名。别名用作表达式的列名,可用于 GROUP BY、ORDER BY 或 HAVING 子句。

您需要将别名选择表达式包装到子查询中,并且可以在外部查询中使用别名表达式。或者只是简单地引用其原始名称下的字段。

【讨论】:

    【解决方案2】:

    您可以改用子查询。解决方法如下:

    select NAME_A, (NAME_A+"ME") as NAME_B
    from(
        select (TABLE_A.NAME) as NAME_A
        from TABLE_A
            where id = 1
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      相关资源
      最近更新 更多