SQL forma eficiente de unirse a una tabla donde existen todos los valores

table 1
item    group_id
123     aaaa
432     bbbb
534     aaaa
765     cccc
656     aaaa
656     cccc
111     cccc

group_id    group_name
aaaa        groupA
bbbb        groupB
cccc        groupC

Quiero encontrar todos los grupos que contienen 765 y 656, en este caso, GroupC contiene ambos valores.

¿Hay alguna forma de evitar un montón de consultas anidadas o declaraciones AND? Digamos si la tabla 1 puede tener miles de emparejamientos y tengo que encontrar los grupos que contienen una lista de 30 elementos. Sería feo escribir una consulta realmente grande para responder la pregunta.

Desearía poder decir "where in (765,656)" pero que se comporte de manera diferente. Si hubiera un montón de elementos para combinar, se volvería desordenado.

SQL Fiddlehttp: //sqlfiddle.com/#! 9 / 6581eb / 9

Datos de muestra (en caso de que SQL Fiddle sea inaccesible por algún motivo):

create table table1(itemID int,groupID varchar(4));
insert into table1(itemID,groupID)
values
  (123,'aaaa')
  ,(432,'bbbb')
  ,(534,'aaaa')
  ,(765,'cccc')
  ,(656,'aaaa')
  ,(656,'cccc')
  ,(111,'cccc');

create table table2(groupID varchar(4),groupName varchar(6));
insert into table2(groupID,groupName)
values
  ('aaaa','groupA')
  ,('bbbb','groupB')
  ,('cccc','groupC');

Respuestas a la pregunta(3)

Su respuesta a la pregunta