【发布时间】:2014-08-15 08:59:30
【问题描述】:
可能有类似的答案,但我花了一个多小时搜索并试图建立相似性。分组有很多,但没有一个可以做我需要的。
基本上我想取多行并将它们合并为一行,将具有不同值的唯一列合并到一个数组中。我相信这些图片会有所帮助:
当前的SQL是:
SELECT mu.`firstname`AS firstname,
mu.`lastname`AS lastname,
mu.`username`AS username,
tu.`tagid` AS tagID
FROM user mu
LEFT JOIN tag_usertags tu ON (tu.`userid`= mu.`id`)
WHERE mu.id=10
目前:
----------------------------------------------------
|firstname | lastname | username | tagId |
|--------------------------------------------------|
|Manager . | User .... | manager.. | 2 |
|Manager . | User .... | manager.. | 11 |
|Manager . | User .... | manager.. | 46 |
|Manager . | User .....| manager.. | 8 |
|Manager . | User .... | manager.. | 31 |
|Manager . | User .... | manager.. | 13 |
|Manager . | User .... | manager.. | 41 |
我想看到的:
--------------------------------------------------------------------
|firstname | lastname | username | tagId |
|------------------------------------------------------------------|
|Manager. | User ...... | manager.. | 2,11,46,8,31,13,41 |
【问题讨论】:
-
你能解释一下为什么当前的结果集不令人满意吗?我没有看到您的预期输出的实际应用,但如果您仍然想要这样,您可以通过游标完成它。
-
实际上会选择多个 ID,但这里没有必要过于复杂,因为它使人们更难以像我一样尝试做同样的事情。 Ende Neu 通过 group_concat 找到了完美的答案