不同領域的多個GROUP_CONCAT我有這樣的查詢:上使用MySQL
SELECT product.id,
GROUP_CONCAT(image.id) AS images_id,
GROUP_CONCAT(image.title) AS images_title,
GROUP_CONCAT(facet.id) AS facets_id
...
GROUP BY product.id
和查詢工作,但並不如預期,因爲如果我有5面和1個圖像的產品(假設圖像使用id = 7),然後我得到這樣的事情在 「images_id」:
「7,7,7,7,7」
如果我有2幅圖像(7和3)然後我得到的是這樣的:
「7,7,7,7,7,3,3,3,3,3」
和我刻面得到的東西,如:
「8,7,6,5,4,8,7,6,5,4」
我認爲MySQL正在做一些類型的型動物工會查詢返回的行,然後連接所有內容。
我的預期結果是(對於最後一個例子):
images_id = 「7,3」
facets_id = 「8,7,6,5,4」
我可以獲取在GROUP_CONCAT中使用DISTINCT,但我有另一個問題: 如果我有兩個圖像具有相同的標題,其中一個是ommited,然後我得到類似的東西:
images_id =「7,3,5」
images_title =「Title7and3,Title5」
所以我想念images_id和images_title之間的關係。
有人知道是否有可能在MySQL中進行此查詢嗎?
也許我正在複雜化一切,沒有任何真正的好處。 我試圖只執行一個查詢,因爲性能,但現在我不太確定它是否更快執行兩個查詢(一個用於選擇facets和另一個用於圖像)。
請解釋一下你認爲最好的解決方案和原因。
謝謝!
我不太瞭解你的查詢,但它看起來非常複雜,我的意思是,我們需要一個子集,每個concat都有一組?它看起來很慢,不是更快2查詢? – Enrique
@恩裏克,這不是速度,而是關於正確性。如果我的代碼不需要實際工作,我可以立即做所有事情。 – Johan
@Enrique,對於每個組concat,不需要子選擇,只適用於與p.id匹配的表每個p.id返回多於1行的表。 – Johan