2013-11-17 2 views
3

я получил следующую таблицу:SQL: как получить строки, содержащие только определенные идентификаторы?

+--------+--------+ 
| group | user | 
+--------+--------+ 
|  1 |  1 | 
|  1 |  2 | 
|  2 |  1 | 
|  2 |  2 | 
|  2 |  3 | 
+--------+--------+ 

нужно выбрать группу, содержащую как пользователь 1 и 2 и только 1 и 2 (не 3 или 42).

Я попытался

SELECT `group` FROM `myTable` 
WHERE `user` = 1 OR `user` = 2 
GROUP BY `group`; 

Но это, конечно, дает мне 1 и 2 группах в то время как группа 2 содержит также пользователю 3.

ответ

2

Один из способов

SELECT `group` 
FROM myTable 
GROUP BY `group` 
HAVING GROUP_CONCAT(DISTINCT `user` ORDER BY `user`) = '1,2'; 

SQL Fiddle

+1

Вы избили меня за секунды! :) –

1

Вы может попробовать следующее:

SELECT `group` 
FROM myTable 
GROUP BY `group` 
HAVING GROUP_CONCAT(DISTINCT `user` ORDER BY `user`) = '1,2'; 
Смежные вопросы