数组值构造函数
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
ARRAY 值构造器允许将单列、非 标量子查询 的结果收集到具有 ARRAY 数据类型语义(序号在元素上定义)的单个嵌套集合值中。
例如,让我们找到
- 所有作者。
- 该作者的书籍出版的语言。
- 该作者书籍可供购买的书店。
这可以在单个查询中完成
SELECT
AUTHOR.FIRST_NAME,
AUTHOR.LAST_NAME,
ARRAY(
SELECT DISTINCT LANGUAGE.CD
FROM BOOK
JOIN LANGUAGE ON BOOK.LANGUAGE_ID = LANGUAGE.ID
) AS BOOKS,
ARRAY(
SELECT DISTINCT BOOK_TO_BOOK_STORE.BOOK_STORE_NAME
FROM BOOK_TO_BOOK_STORE
JOIN BOOK ON BOOK_TO_BOOK_STORE.BOOK_ID = BOOK.ID
WHERE BOOK.AUTHOR_ID = AUTHOR.ID
) AS BOOK_STORES
FROM AUTHOR
ORDER BY AUTHOR.ID
var result = create.select(
AUTHOR.FIRST_NAME,
AUTHOR.LAST_NAME,
array(
selectDistinct(BOOK.language().CD)
.from(BOOK)
.where(BOOK.AUTHOR_ID.eq(AUTHOR.ID))
).as("books"),
array(
selectDistinct(BOOK_TO_BOOK_STORE.BOOK_STORE_NAME)
.from(BOOK_TO_BOOK_STORE)
.where(BOOK_TO_BOOK_STORE.tBook().AUTHOR_ID.eq(AUTHOR.ID))
).as("book_stores"))
.from(AUTHOR)
.orderBy(AUTHOR.ID)
.fetch();
上面的 var result 被推断为
Result<Record4<String, String, String[], String[]>> result =
以上查询的结果可能如下所示
+----------+---------+--------+--------------------------------------------------+ |first_name|last_name|books |book_stores | +----------+---------+--------+--------------------------------------------------+ |George |Orwell |[en] |[Ex Libris, Orell Füssli] | |Paulo |Coelho |[de, pt]|[Buchhandlung im Volkshaus, Ex Libris, Orell Fü...| +----------+---------+--------+--------------------------------------------------+
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的反馈!