别名列
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
就像 表 一样,列也可以使用别名重命名。这是一个例子
SELECT FIRST_NAME || ' ' || LAST_NAME author, COUNT(*) books FROM AUTHOR JOIN BOOK ON AUTHOR.ID = AUTHOR_ID GROUP BY FIRST_NAME, LAST_NAME;
这是使用 jOOQ 完成的方式
Record record = create.select( concat(AUTHOR.FIRST_NAME, inline(" "), AUTHOR.LAST_NAME).as("author"), count().as("books")) .from(AUTHOR) .join(BOOK).on(AUTHOR.ID.eq(BOOK.AUTHOR_ID)) .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME) .fetchAny();
当您像上面这样对字段进行别名时,您可以使用别名访问这些字段的值
System.out.println("Author : " + record.getValue("author")); System.out.println("Books : " + record.getValue("books"));
未命名的列表达式
在大多数 SQL 数据库中,顶层选择中列表达式的别名是可选的。数据库将生成一个大致基于该表达式的列名,用于文档目的(例如,在 SQL Developer 等工具中运行查询时),但应用程序不能显式地依赖该名称。这不是问题,因为仍然可以通过索引引用列。
以类似的方式,jOOQ 将为列表达式假定一个未指定的、生成的列名,该名称基于它们的内容。
-- Arithmetic expression 1 + 2 -- Correlated subquery (SELECT 1 AS a)
// Arithmetic expression inline(1).plus(inline(2)); // Correlated subquery field(select(inline(1).as("a")));
这些未命名的表达式既可以在 SQL 中使用,也可以在 jOOQ 中使用。但是,请注意,jOOQ 将使用 Field.getName()
从字段中提取此列名,在引用该字段或将其嵌套在派生表中时。为了完全控制任何此类列名,始终为 SQL 和 jOOQ 中的列表达式提供显式别名是一个好主意。
渲染声明或引用
相同的别名列实例根据它在 jOOQ 表达式树中的位置而呈现方式不同。有关更多详细信息,请参阅手册中关于 渲染声明与引用 的部分。
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!