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建议的思路将它封装在另一个查询中。另一方面,您可以将示例数据和预期输出作为文本与查询的简化版本一起发布。