Google cloud platform 在UNNEST(@array\u参数)-如何将@array\u参数指定为对象数组
我正在使用扳手nodejs客户端库。 我需要请求如下查询:Google cloud platform 在UNNEST(@array\u参数)-如何将@array\u参数指定为对象数组,google-cloud-platform,google-cloud-spanner,Google Cloud Platform,Google Cloud Spanner,我正在使用扳手nodejs客户端库。 我需要请求如下查询: database.run({ sql: `SELECT * FROM Goods@{FORCE_INDEX=GoodsByCodeName} WHERE (code, name) in UNNEST(@codesNames)`, params: {codesNames: codesNames}}, ... 如何指定array\u参数的类型-codesNames当它是对象数组时[{string,string},…]我更改选择方式: da
database.run({
sql: `SELECT * FROM Goods@{FORCE_INDEX=GoodsByCodeName} WHERE (code, name) in UNNEST(@codesNames)`,
params: {codesNames: codesNames}}, ...
如何指定array\u参数的类型
-codesNames当它是对象数组时[{string,string},…]
我更改选择方式:
database.run({
sql: `SELECT * FROM Goods WHERE (code, name) in (SELECT (code, name) FROM (UNNEST (@codes) as code WITH OFFSET AS num JOIN UNNEST (@names) as name WITH OFFSET AS num using(num)))`,
params: {codes: codes, names: names},....
我通过以下方式更改选择:
database.run({
sql: `SELECT * FROM Goods WHERE (code, name) in (SELECT (code, name) FROM (UNNEST (@codes) as code WITH OFFSET AS num JOIN UNNEST (@names) as name WITH OFFSET AS num using(num)))`,
params: {codes: codes, names: names},....
云扳手还不支持对象类型的参数。为了解决这个问题,您可以将对象分解为每个字段的并行数组参数,在偏移量上连接它们,创建一个子查询,其中包含与对象类型相同的行
(code,name)
,并根据表连接该子查询,如下所示:
SELECT * FROM Goods@{FORCE_INDEX=GoodsByCodeName} g
JOIN (
SELECT p.code, q.name from
(SELECT code, o_code FROM UNNEST(@code_array) as code WITH OFFSET o_code) p
JOIN
(SELECT name, o_name FROM UNNEST(@name_array) as name WITH OFFSET o_name) q
ON p.o_code = q.o_name)
) r ON g.code = r.code and g.name = r.name
云扳手还不支持对象类型的参数。为了解决这个问题,您可以将对象分解为每个字段的并行数组参数,在偏移量上连接它们,创建一个子查询,其中包含与对象类型相同的行
(code,name)
,并根据表连接该子查询,如下所示:
SELECT * FROM Goods@{FORCE_INDEX=GoodsByCodeName} g
JOIN (
SELECT p.code, q.name from
(SELECT code, o_code FROM UNNEST(@code_array) as code WITH OFFSET o_code) p
JOIN
(SELECT name, o_name FROM UNNEST(@name_array) as name WITH OFFSET o_name) q
ON p.o_code = q.o_name)
) r ON g.code = r.code and g.name = r.name