You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP中使用UNNEST筛选iOS订单的SQL查询问题

问题分析与解决方案

你写的SQL语句存在错误,原因是UNNEST(parameters)展开后得到的每条记录是包含name和stringValue的结构体,不存在device字段,所以p.device = 'ios'这个条件无法匹配到数据。

正确实现方式

1. 获取设备为iOS的订单及对应参数行

如果只需要提取符合条件的订单,以及对应的参数条目,可使用以下语句:

SELECT *
FROM `your-project.your-dataset.table`
CROSS JOIN UNNEST(parameters) AS p
WHERE p.name = 'device' AND p.stringValue = 'ios'

注:CROSS JOIN UNNEST和你原语句的逗号写法功能等价,但可读性更强。

2. 获取完整订单数据(包含该订单所有参数)

如果需要保留整个订单的全部参数信息(比如订单1的country、price、device参数都保留),可以用两种方式实现:

方法一:使用EXISTS子查询

SELECT *
FROM `your-project.your-dataset.table` t
WHERE EXISTS (
  SELECT 1
  FROM UNNEST(t.parameters) p
  WHERE p.name = 'device' AND p.stringValue = 'ios'
)

方法二:结合ARRAY_FILTER保留完整参数数组

如果要过滤出设备为iOS的订单,同时保留该订单的所有参数:

SELECT 
  order_no,
  ARRAY(SELECT AS STRUCT * FROM UNNEST(parameters)) AS parameters
FROM `your-project.your-dataset.table`
WHERE EXISTS (
  SELECT 1
  FROM UNNEST(parameters) p
  WHERE p.name = 'device' AND p.stringValue = 'ios'
)

内容的提问来源于stack exchange,提问作者sadvsdcasd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 19:16:11