MySQL聚合函数来过滤null

问题描述 投票:0回答:1

我有一条记录,该记录与N个其他表连接,并从每个表中提取一个列。我想将所有这些提取的列的[[N放在单个记录中。

构建下面的图后,看来我可以轻松地进行第二步,然后我应该能够使用聚合函数来过滤掉NULL。我到处寻找GROUP_COALESCE之类的东西,但找不到能实现此目的的东西。

我在这里有一个小提琴,很不幸,它起作用了,因为MySQL允许您选择GROUP BY中没有的列,而没有您自己承担的危险http://sqlfiddle.com/#!9/304992/1/0

如果记录存在,是否有办法确保它总是从记录中选择列?

最终结果应该是每个组一个记录,并且每一列将包含该组成功连接的唯一行内的值。

Intuitively I think this should work

mysql sql mysql-5.6
1个回答
1
投票
如果我正确地遵循了您的说明,则可以只对来自联接表的列使用聚合函数。聚合函数将忽略空值,因此,由于每个列和每个组都有两个空值和一个非空值,因此这将返回预期的输出(同时符合ONLY_FULL_GROUP_BY选项)。

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

© www.soinside.com 2019 - 2024. All rights reserved.