[英]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.