+ -
当前位置:首页 → 问答吧 → sql 查询

sql 查询

时间:2011-11-24

来源:互联网



有2列, Group_id 和 Member

select Group_id from table

where Member = A 且 Member = B 且 Member = C


总的来说,我希望把 仅存在A、B、C 这3 个元素的 group_id 查找出来。 也就是把22 找出来。

具体的sql 该怎么写

作者: tomorrowzm   发布时间: 2011-11-24

SQL code
SELECT group_id
FROM
(
  SELECT group_id,MAX(susbstr(sys_connect_by_path(MEMBER,','),2)) join_member
  FROM
  (
    SELECT group_id,MEMBER,
    row_number()over(PARTITION BY group_id
    ORDER BY group_id) rn
    FROM tab
  )
  START WITH rn=1 
  CONNECT BY rn-1 = PRIOR rn AND group_id=PRIOR group_id
) 
WHERE join_member='A,B,C'

作者: cosio   发布时间: 2011-11-24




SQL code


SELECT group_id
FROM
(
  SELECT group_id,MAX(substr(sys_connect_by_path(MEMBER,','),2)) join_member
  FROM
  (
    SELECT group_id,MEMBER,row_number()over(PARTITION BY group_id ORDER BY group_id) rn
    FROM test
  ) GROUP BY group_id
  START WITH rn=1 
  CONNECT BY rn-1 = PRIOR rn AND group_id=PRIOR group_id
) 
WHERE join_member='B,C,A'  --顺序调过来就没结果了
--join_member='A,B,C'      有结果且正确

作者: tomorrowzm   发布时间: 2011-11-24



子查询的 结果貌似不对啊

作者: tomorrowzm   发布时间: 2011-11-24