我是 SQL 新手,想知道如何選擇嵌套表。我有兩個這樣的表:
傳感器
| sensor_id | 型號 | location_id |
|---|---|---|
| 整數 | varchar | 整數 |
地點
| location_id | 姓名 | 地點 | 半徑 |
|---|---|---|---|
| 整數 | varchar | 觀點 | 整數 |
它們與foreign key. 目前,我選擇使用
SELECT sensors.*, locations.*
FROM sensors INNER JOIN locations
ON sensors.location_id = locations.location_id;
像這樣從兩者中獲取資料:
{
"sensor_id": 1,
"model_no": "some string",
"location_id": 2,
"name": "Berlin",
"location": {
"x": 3,
"y": 3
},
"radius": 1000
}
我想知道是否有任何方法可以將位置資料分組為自己的物件,如下所示:
{
"sensor_id": 1,
"model_no": "some string",
"location": {
"name": "Berlin",
"location": {
"x": 3,
"y": 3
},
"radius": 1000
}
}
我正在使用帶有 mysql npm 包的 MySQL 8 來執行查詢。我知道我可以使用 javascript 修改回應,但想知道它是否可以直接在查詢中完成,如果可以,性能是更好還是更差?
uj5u.com熱心網友回復:
SELECT JSON_OBJECT(
'sensor_id', sensor_id,
'model_no', model_no,
'location', JSON_OBJECT(
'name', name,
'location', JSON_OBJECT(
'x', CAST(ST_X(location) AS SIGNED),
'y', CAST(ST_Y(location) AS SIGNED)
),
'radius', radius
)
) as JSON_output
FROM sensors
JOIN locations USING (location_id);
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=b17dfa3069b4bb9345a9e99e8b893121
uj5u.com熱心網友回復:
您必須手動標記每一列;您無法獲得所需的結果并使用*.
一個小小的安慰獎:如果你改變
ON sensors.location_id = locations.location_id;
到
USING(location_id)
將只有一location_id列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/442561.html
標籤:javascript mysql sql 数据库
