Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 在UNNEST(@array\u参数)-如何将@array\u参数指定为对象数组_Google Cloud Platform_Google Cloud Spanner - Fatal编程技术网

Google cloud platform 在UNNEST(@array\u参数)-如何将@array\u参数指定为对象数组

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

我正在使用扳手nodejs客户端库。 我需要请求如下查询:

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