簡體   English   中英

同一查詢中有幾個group_concat

[英]Several group_concat in the same query

我在MySQL中有一個主表(m)和兩個輔助(a,b)。

我有這個查詢:

SELECT *,group_concat(a.name_auxone) as namesone
FROM main m 
    LEFT JOIN auxiliaryone a ON m.id_main=a.id_main_auxone 
    WHERE m.id_main=1

...,並使用php $ row []創建后,顯示:

$row['namesone']-->name1,name2,name3

可以(我在auxiliarione中有3個與id_main = 1相關的寄存器)。 但是如果我想用這個查詢加入另一個輔助表(與ID_main = 1關聯的2個寄存器)...

SELECT *,group_concat(a.name_auxone) as namesone,
         group_concat(b.name_auxtwo) as namestwo 
FROM main m 
    LEFT JOIN auxiliaryone a ON m.id_main=a.id_main_auxone 
    LEFT JOIN auxiliarytwo b ON m.id_main=b.id_main_auxtwo

...我有這個值:

$row['namesone']-->nameone1,nameone1,   nameone2,nameone2,   nameone3,nameone3
$row['namestwo']-->nametwo1,nametwo2,   nametwo1,nametwo2,   nametwo1,nametwo2

因此,在nameone(關聯的3個寄存器)中,每個寄存器重復2次。 在namestwo(關聯的2個寄存器)中,將2個寄存器重復3次。 我在寄存器組之間放置空格,以清楚地看到它們是如何重復的(11、22、33和12、12、12)。

正確的顯示應為:

$row['namesone']-->nameone1,nameone2,nameone3
$row['namestwo']-->nametwo1,nametwo2

(123和12)我在做什么錯? 謝謝。

您可以使用DISTINCT完成。 嘗試這個:

SELECT *,group_concat(DISTINCT a.name_auxone) as namesone,
     group_concat(DISTINCT b.name_auxtwo) as namestwo 
FROM main m 
LEFT JOIN auxiliaryone a ON m.id_main=a.id_main_auxone 
LEFT JOIN auxiliarytwo b ON m.id_main=b.id_main_auxtwo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM