如何解决如何实现 UNNSET(SELECT NAME FROM NAMES);在扳手
Select * Id IN UNNSET(@IDS)
和
UNNSET(SELECT NAME FROM NAMES);
在这个查询中,UNnesT(@IDS)
正在工作,因为我将 IDS 作为 ListUNNSET(SELECT NAME FROM NAMES)
在扳手中不起作用。我如何在扳手中实现它?
解决方法
对您的问题的一个小评论是您拼错了 UNNEST
(如 UNNSET
)。提问时我会假设这是一个错误,所以我会忽略它。
鉴于以下架构:
CREATE TABLE Names (
Id INT64 NOT NULL,Names ARRAY<STRING(MAX)> NOT NULL,) PRIMARY KEY(Id);
CREATE TABLE SingleNames (
Id INT64 NOT NULL,Name STRING(MAX),) PRIMARY KEY(Id)
我们可以像这样执行 IN
查询:
SELECT *
FROM SingleNames
WHERE Name IN UNNEST((SELECT n.Names FROM Names n WHERE n.Id = 1))
注意 UNNEST
调用中的双括号,这是必需的,以便将查询解释为表达式(这是 UNNEST
调用的必需参数)。
我们可以像这样使用 Java 客户端查询:
try (ResultSet rs = databaseClient
.singleUse()
.executeQuery(Statement
.newBuilder("SELECT * FROM SingleNames WHERE Name IN UNNEST((SELECT n.Names FROM Names n WHERE n.Id = @id))")
.bind("id")
.to(1L)
.build())
) {
while (rs.next()) {
System.out.println(rs.getLong("Id") + "," + rs.getString("Name"));
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。