mysql版本为5.0以上,支持存储过程表结构如下
用户表
ID     LoginID 
1      admin1
2      admin2职位表
ID     Post     UserID
1      经理      1
2      职员      2证件表
ID     字段   UserID
1      A          1
2      B          1
3      C          1
4      A          2
5      B          2大概的表结构是这样的,具体应用中的比这个要复杂一些现在我用GROUP_CONCAT查询后的结果为
LoginID Post               字段
admin1  经理,经理,经理     A,B,C
admin2  职员,职员           A,B
如何可以查询出来的结果是
LoginID Post               字段
admin1  经理                 A,B,C
admin2  职员                 A,B具体应用中大概要有5,6张这样的类别表

解决方案 »

  1.   

    GROUP_CONCAT( DISTINCT str) 
    这样呢
      

  2.   

    GROUP_CONCAT里可以加DISTINCT,ORDER BY,SEPARATOR
      

  3.   

    SELECT A.LoginID,GROUP_CONCAT(B.字段),GROUP_CONCAT(C.Post)
    FROM 用户表 A INNER JOIN 证件表 B ON A.ID=B.UserID
    LEFT JOIN 职位表 C ON B.UserID=C.UserID
    GROUP BY A.LoginID
      

  4.   

    或者自己写一个存储过程用于动态执行sql语句的多个字段合并为一个值
      

  5.   

    SELECT A.LoginID,GROUP_CONCAT(B.字段),GROUP_CONCAT(C.Post)
     FROM 用户表 A INNER JOIN 证件表 B ON A.ID=B.UserID
     inner JOIN 职位表 C ON B.UserID=C.UserID
     GROUP BY A.LoginID在后面加INNER JOIN 你的类别表,GROU_CONCAT(字段名)即可,如果不确定,
    考虑用字符串累加生成SQL语句的方法
      

  6.   

    select 用户表.LoginID,职位表.Post,GROUP_CONCAT(证件表.字段)
    from 用户表 ,职位表 ,证件表
    where 用户表.ID=职位表.UserID
    and 用户表.ID=证件表.UserID
    group by 用户表.LoginID
      

  7.   

    换成inner join 后 第二个用户没有了 只剩下一个了
    而且还是最多的有几个其他的就有几个
      

  8.   

    换成LEFT JOIN吧
    SELECT A.LoginID,GROUP_CONCAT(B.字段),GROUP_CONCAT(C.Post)
     FROM 用户表 A LEFT JOIN 证件表 B ON A.ID=B.UserID
     LEFT JOIN 职位表 C ON B.UserID=C.UserID
     GROUP BY A.LoginID
      

  9.   


    原来group_concat可以用distinct去重,十分感谢。也感谢其他两位版主的支持!