

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 巢狀物件查詢
<a name="iot-sql-nested-queries"></a>

您可以使用巢狀 SELECT 子句來查詢陣列和內部 JSON 物件中的屬性。受 SQL 版本 2016-03-23 和更新版本支援。

請考慮下列 MQTT 訊息：

```
{ 
    "e": [
        { "n": "temperature", "u": "Cel", "t": 1234, "v": 22.5 },
        { "n": "light", "u": "lm", "t": 1235, "v": 135 },
        { "n": "acidity", "u": "pH", "t": 1235, "v": 7 }
    ]
}
```

**Example**  
您可以使用以下規則將值轉換為新的陣列。  

```
SELECT (SELECT VALUE n FROM e) as sensors FROM 'my/topic'
```

該規則會產生以下輸出。

```
{
    "sensors": [
        "temperature",
        "light",
        "acidity"
    ]
}
```

**Example**  
使用相同的 MQTT 訊息，您也可以使用下列規則查詢巢狀物件中的特定值。  

```
SELECT (SELECT v FROM e WHERE n = 'temperature') as temperature FROM 'my/topic'
```

該規則會產生以下輸出。

```
{
    "temperature": [
        {
            "v": 22.5
        }
    ]
}
```

**Example**  
您也可以使用更複雜的規則來平面化輸出。  

```
SELECT get((SELECT v FROM e WHERE n = 'temperature'), 0).v as temperature FROM 'topic'
```

該規則會產生以下輸出。

```
{
    "temperature": 22.5
}
```