我的任务是创建一个.sql批处理文件来查询包含用户/服务器/组信息的MySQL数据库(版本:4.1.13-standard),例如。
user1 server1 group1,group2
user1 server2 group1,group3
user1 server3 group5
user2 server2 group2
user2 server5 group2
user3 server4 group4
诀窍是,输出文件的格式必须是每个用户有一行,并且所有服务器和组信息组合在一起。所以上面的例子看起来像是:
“用户1”, “服务器1:组1-组2;服务器2:组1-组3; server1的:组5”
“用户2”, “服务器2:组2;服务器5:组2”
“用户3”, “服务器4:组4”
如果之前已经回答了这个或类似的问题,我道歉。我保证我花了几个小时寻找解决方案,但没有找到解决方案。或者当我看到它时我没有意识到这一点。通过交易,我不是任何想象力的DBA,我对mysql知之甚少还不足以解决这个问题。
到目前为止,我得到的最接近的是:
select concat(name,',',group_concat(concat(trim(hostname),':',replace(trim(groups),',','-'))separator ';'))
感谢您提供任何帮助。
答案 0 :(得分:0)
我尝试了一下我的一个数据库,我得到的结果与你的预期结果非常相似,因为我没有像你这样的结构化数据库。
尝试
SELECT CONCAT(
t.name, ',', GROUP_CONCAT(
DISTINCT CONCAT(TRIM(t.hostname),':', REPLACE(TRIM(t.groups),',','-'))
SEPARATOR ';')
) FROM table_name t GROUP BY t.name
我猜,DISTINCT和GROUP BY t.name可能是神奇的词;)