表是
id group_id name
1   A        q
2   B        q
3   C        e
4   A        r
5   B        tgroup_id是人所在的组
如何查询同时在A组B组的人名(name)?

解决方案 »

  1.   

    SELECT NAME
      FROM (SELECT NAME, wmsys.wm_concat(group_id) AS gr
              FROM a
             GROUP BY NAME)
     WHERE gr IN ('A,B', 'B,A')这样应该可以,不过貌似数据库要10g以上
      

  2.   


    如有有个人同时在ABC组怎么办
      

  3.   

    自连接查询
    select name from table a,table b where a.name=b.name and a.groupid=a and b.groupid=b;
      

  4.   

    select name from (
    select count(name) con,name from (
    select distinct name from table where group_id= 'B'
    union
    select distinct name from table where group_id = 'A')
    where group by name)
    where con = 2
      

  5.   

    要不就这样SELECT DISTINCT NAME
      FROM a t1
     WHERE EXISTS (SELECT 1
              FROM a t2
             WHERE t1.NAME = t2.NAME
                   AND t2.group_id = 'A')
           AND EXISTS (SELECT 1
              FROM a t2
             WHERE t1.NAME = t2.NAME
                   AND t2.group_id = 'B')
      

  6.   


    真细心啊SELECT NAME
      FROM (SELECT NAME, wmsys.wm_concat(group_id) AS gr 
              FROM a 
             GROUP BY NAME)
     WHERE gr LIKE '%A,B%'
           OR gr LIKE '%B,A%'
      

  7.   

    如果只有两个组的话,可以用以下的SQL语句:select name from yourtable where group_id='A' 
    intersect
    select name from yourtable where group_id='B';