我有一条记录,该记录与N个其他表连接,并从每个表中提取一个列。我想将所有这些提取的列的[[N放在单个记录中。
构建下面的图后,看来我可以轻松地进行第二步,然后我应该能够使用聚合函数来过滤掉NULL
。我到处寻找GROUP_COALESCE
之类的东西,但找不到能实现此目的的东西。 我在这里有一个小提琴,很不幸,它起作用了,因为MySQL允许您选择GROUP BY
中没有的列,而没有您自己承担的危险http://sqlfiddle.com/#!9/304992/1/0。
如果记录存在,是否有办法确保它总是从记录中选择列?
最终结果应该是每个组一个记录,并且每一列将包含该组成功连接的唯一行内的值。
SELECT
group_table_id,
MAX(t1.v) t1_v,
MAX(t2.v) t2_v,
MAX(t3.v) t3_v
FROM group_table
LEFT JOIN t1 ON t1.group_id = group_table_id
LEFT JOIN t2 ON t2.group_id = group_table_id
LEFT JOIN t3 ON t3.group_id = group_table_id
GROUP BY group_table_id