MySQL:行连接
也许这真的是一个简单的问题,提前谢谢 我目前拥有的:MySQL:行连接,mysql,concatenation,Mysql,Concatenation,也许这真的是一个简单的问题,提前谢谢 我目前拥有的: +-----+---+---+---+---+ | sid | a | b | c | d | +-----+---+---+---+---+ | 123 | | | | 4 | | 123 | | 2 | | | | 123 | | | 3 | | | 123 | 1 | | | | | 456 | | 5 | | | | 456 | | | 6 | | | 789 |
+-----+---+---+---+---+
| sid | a | b | c | d |
+-----+---+---+---+---+
| 123 | | | | 4 |
| 123 | | 2 | | |
| 123 | | | 3 | |
| 123 | 1 | | | |
| 456 | | 5 | | |
| 456 | | | 6 | |
| 789 | | | | 8 |
| 789 | 7 | | | |
+-----+---+---+---+---+
我想要得到的是:
+-----+------+------+------+------+
| sid | a | b | c | d |
+-----+------+------+------+------+
| 123 | 1 | 2 | 3 | 4 |
| 456 | | 5 | 6 | |
| 789 | 7 | | | 8 |
+-----+------+------+------+------+
如何在MySQL中实现这样的“行连接”?您可以使用查询中带有
GROUP BY
子句的MAX()
聚合函数来实现这一点
SELECT sid, MAX(a), MAX(b), MAX(c), MAX(d)
FROM table
GROUP BY sid
我使用了MAX()
,因为它会用其他值过滤空值
这里有更多的解释:“我目前拥有的:”-这是您的数据的样子还是您编写的查询的结果?“我目前拥有的:'是另一个大查询的结果。考虑到您的大查询的输出,我怀疑您没有;t有条件地合计总数。如果您不想重构这个大查询,我会按照Arnaud Peralta建议的思路将它封装在另一个查询中。另一方面,您可以将示例数据和预期输出作为文本与查询的简化版本一起发布。