MySQL запрос подсчета нескольких значений - PullRequest
0 голосов
/ 13 апреля 2010

Рассмотрим следующую таблицу БД:

c     p
=========
1     'a'
1     'b'
2     'a'
2     'c'

Теперь моя цель - получить список чисел c, для которого указано, что у каждого числа в этом списке есть хотя бы запись с p = 'a' AND p = 'b'.

В приведенном выше примере это будет с = 1.

Теперь мой вопрос: как мне это сделать, используя один запрос MySQL?

Ответы [ 2 ]

2 голосов
/ 13 апреля 2010
select t1.c
from MyTable t1
inner join MyTable t2 on t1.c = t2.c
where t1.p = 'a' and t2.p = 'b'

Обновление:

select c
from MyTable 
where p in ('a', 'b', 'c', 'd')
group by c
having count(distinct p) = 4
1 голос
/ 13 апреля 2010

Существуют различные способы решения проблемы в зависимости от правил, которым следуют ваши данные, если таковые имеются. Не зная больше о вашей проблеме, я бы сделал:

SELECT t1.c FROM table t1 INNER JOIN table t2
  ON t1.c = t2.c
  WHERE t1.p = 'a' AND t2.p = 'b'
...