我有 2 張桌子。這兩個表具有一對多的關系。
表 - A
column1 column2
1 label1
2 label2
表 - B
Bcolumn1 Bcolumn2 Bcolumn3
1 value1 value4
1 value2 value5
2 value3 value6
結果表
column1 column2 json
1 label1 [{"Bcolumn":value1,"Bcolumn":value4},{"Bcolumn":value2,"Bcolumn":value5}]
2 label2 [{"Bcolumn":value3,"Bcolumn":value6}]
我想使用 TABLE - A 和 TABLE - B 獲得結果表。
我怎樣才能得到這個結果?
謝謝你。
uj5u.com熱心網友回復:
使用 SQLite 的JSON1 擴展函式:
SELECT a.column1, a.column2,
json_group_array(json_object('Bcolumn', b.Bcolumn2, 'Bcolumn', b.Bcolumn3)) json
FROM tableA a INNER JOIN tableB b
ON b.Bcolumn1 = a.column1
GROUP BY a.column1;
請參閱演示。
uj5u.com熱心網友回復:
您在 sqlite 中尋找的是 group_concat() 函式。這很棘手,因為你有他想要在 2 個不同列中連接的值。基本上你可以做到以下幾點
select
a.column1
, a.column2
, '[{' || group_concat('"Bcolumn":' || b.bcolumn2 || '"Bcolumn":' || b.bcolumn3,'};{') || '}]' as json_output
from tablea a
inner join tableb b on
a.column1 = b.bcolumn1
group by
a.column1
, a.column2
;
我用 MSSQL 2019 和 string_agg() 測驗了這個解決方案,但是從檔案 ( https://www.sqlitetutorial.net/sqlite-group_concat/ ) 來看,這在 sqlite 中應該也能正常作業。
訣竅是使用 '};{' 作為分隔符,因為像這樣,您只需要關心開始和結束括號,中間什么都不需要。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/424977.html
標籤:sql sqlite 更好的sqlite3
