连接表中的多个行和字段

时间:2014-04-11 12:31:54

标签: mysql concat

我希望连接相同表格的部分字段

id      user_id     user_ip
4       971         108.54.218.114
5       972         108.54.218.114
6       973         108.54.218.114
7       974         108.54.218.114
8       975         107.222.159.246
9       975         98.54.818.133

在上面的示例中,我们可以看到具有IP地址(108.54.218.114)地址的用户使用以下帐户ID(971,972,973,974)创建多个帐户,但也可以看到具有帐户ID(975)从以下IP地址连接(107.222.159.246,98.54.818.133)

我想像这样格式化结果

user_id             user_ip
971,972,973,974     108.54.218.114
975                 107.222.159.246, 98.54.818.133

的MySQL

SELECT 
    GROUP_CONCAT(DISTINCT users_log.user_id) AS ID_LOG, 
    GROUP_CONCAT(DISTINCT users_log.user_ip) AS IP_LOG
FROM users_log  
    GROUP BY users_log.user_id
ORDER BY users_log.user_id DESC

如果有人可以帮助我?

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

最近有另一个问题(我找不到)就此问题非常接近。我询问了交叉行,因为这类解决方案的(缺乏更好的术语) recursiveness

这是SQL为您提供确切答案的精确样本集。

SELECT user_id, GROUP_CONCAT(DISTINCT user_ip) AS user_ip
FROM users_log
GROUP BY user_id
HAVING COUNT(*) >1
UNION
SELECT GROUP_CONCAT(DISTINCT user_id) AS user_id,  user_ip
FROM users_log
GROUP BY user_ip
HAVING COUNT(*) >1;