我有下面的MySQL查詢應該從表a和b(一對多關係)返回記錄,還有從表c返回的任何值的逗號分隔列表。但是,表c中並不總是有記錄(這就是爲什麼我使用LEFT OUTER JOIN將它加入到表a中)。沒有返回空值的行group_concat沒有返回
SELECT `a`.`id` , `a`.`name` , `b`.`id` AS `b_id` , `b`.`name` AS `b_name` , GROUP_CONCAT( `c`.`l_id`) AS `c_ls`
FROM `a`
INNER JOIN `b` ON `a`.`b_id` = `b`.`id`
LEFT OUTER JOIN `c` ON `a`.`id` = `c`.`a_id`
GROUP BY `a`.`id`
ORDER BY `a`.`created` DESC
上述查詢返回1個記錄時它應該返回2.記錄1具有表C 3個匹配的記錄,記錄2具有表C 0匹配的記錄。
查詢返回:
id | name | b_id | b_name | c_ls
1 | John | 2 | Bla | [BLOB - 3 B]
如果我刪除GROUP_CONCAT和GROUP_BY條款然後返回2個記錄:
id | name | b_id | b_name | c_ls
1 | John | 2 | Bla | [BLOB - 3 B]
2 | Fred | 3 | Blo | [BLOB - NULL]
看來,如果c_ls爲null,則GROUP_CONCAT被停止排回。任何想法,我做錯了什麼?
謝謝,非常完美! – RichW 2011-01-06 11:54:42