当前位置: 首页 > 面试题库 >

重用SQL SELECT语句中的别名字段

朱锐
2023-03-14
问题内容

我想实现以下目标:

SELECT 
  (CASE WHEN ...) AS FieldA,
  FieldA + 20 AS FieldB
FROM Tbl

假设我用“ …”代替了一个冗长而复杂的 CASE 语句,那么在选择并使用别名时, 我不想重复 它。FieldB``FieldA

请注意,这将返回多行,因此在我的情况下,语句外的DECLARE/是不好的。SET``SELECT


问题答案:

一种工作方式是使用子查询:

SELECT
  FieldA,
  FieldA + 20 AS FieldB
FROM (
  SELECT 
    (CASE WHEN ...) AS FieldA
  FROM Tbl
) t

为了提高可读性,您还可以使用CTE

WITH t AS (
  SELECT 
    (CASE WHEN ...) AS FieldA
  FROM Tbl
)
SELECT
  FieldA,
  FieldA + 20 AS FieldB
FROM
  t


 类似资料:
  • 我只是在尝试使用更复杂的语句时修补SQL。我不知道这是否符合条件,但请指导如何进行。 我已经研究了连接和一些关于多个Select语句的问题,但无法正确理解它们。 我有以下两张表: emp表: 图书目录: 其中books表中的是引用emp表的外键。 我需要从特定组织的books表中获取所有记录。但除此之外,我还需要在结果中获得各个员工的所有数据,如姓名、地址。 请给我指引正确的方向。 谢谢

  • 本文向大家介绍MySQL中使用SQL语句对字段进行重命名,包括了MySQL中使用SQL语句对字段进行重命名的使用技巧和注意事项,需要的朋友参考一下 MySQL中,如何使用SQL语句来对表中某一个字段进行重命名呢?我们将使用alter table 这一SQL语句。 重命名字段的语法为:alter table <表名> change <字段名> <字段新名称> <字段的类型>。 现在我们来尝试把tes

  • 问题内容: 我创建的查询之一存在一个奇怪的“问题”。给定下一个查询: phpMyAdmin一直在引发有关没有名为“ LatestBookableTimestamp”的列的错误,即使我有一个由子查询检索的列,也就是该别名。我也尝试过使用tableprefix选择每一列。第八,这没有用。最终,我通过表别名选择了所有列,并为表指定了别名。一切都没有运气。 有人可以告诉我我在做什么错吗?我什至搜索了一些资

  • 问题内容: 我想重命名表达式结果中的列。当然,以下操作无效: 由于我是SQL的新手,我想我只是缺少一个会导致答案的概念,工具或关键字。向正确方向的提示将不胜感激。谢谢! 更新 我正在寻找一种实现此目的的通用方法,并且特定于MySQL的技术绝对可以。 简而言之,我正在编写一个工具,用于将MySQL查询的结果“导出”到Google Spreadsheets(通过Google Data API)。有些查

  • 问题内容: 我正在自定义由hibernate生成的插入SQL,并遇到了问题。当Hibernate自己生成查询时,它将数据插入表的前两列,但这会导致数据库错误,因为表的所有四列都是不可为空的。为了正确执行插入,它必须将相同的数据插入到新记录的两列中。这意味着我需要Hibernate将相同的数据绑定到我正在编写的查询(准备好的语句)中的两个不同的参数上。 是否有一些SQL语法可让我以与绑定到绑定语句不

  • 我在QueryDSL中有以下查询: 我正在尝试在主查询的子查询(字段 1 和字段 2)中引用别名字段。不幸的是,我得到这个错误: 我还尝试了以下内容: 但我得到的是相同的错误,只是“AliasedTable”而不是“field1”。 如何从outter select中引用别名字段? 先谢谢你。