在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/人工智能  數(shù)據(jù)庫(kù)/ 數(shù)據(jù)庫(kù)兩個(gè)表交叉查詢(xún)的問(wèn)題

數(shù)據(jù)庫(kù)兩個(gè)表交叉查詢(xún)的問(wèn)題

一張商品表a,
一張商品標(biāo)簽表b
表a一個(gè)商品對(duì)應(yīng)一條記錄
表b一個(gè)商品對(duì)應(yīng)多條記錄(多個(gè)標(biāo)簽)

請(qǐng)問(wèn)我如何一次性取出滿(mǎn)足一定條件的表a和表b的記錄???
已做過(guò)以下嘗試-
1.通過(guò)full join關(guān)聯(lián)兩表,但這樣會(huì)導(dǎo)致表a數(shù)據(jù)大量重復(fù)(表a是主表,幾十個(gè)字段,表b三個(gè)字段)
2.用條件查出滿(mǎn)足條件的表a id,再對(duì)每個(gè)id分別查詢(xún)表b數(shù)據(jù),再通過(guò)程序合并,但效率仍然很低。
不知道各位有沒(méi)有更好的辦法??

回答
編輯回答
伴謊

postgre, 一對(duì)多用數(shù)組

WITH C AS (SELECT 商品ID,ARRAY_AGG(標(biāo)簽) AS 標(biāo)簽 FROM B GROUP BY 商品ID)
SELECT A.*, 標(biāo)簽 FROM A LEFT JOIN C USING(商品ID) WHERE 你的條件
2018年5月20日 00:23