Как ВЫБРАТЬ для следующего? - PullRequest
3 голосов
/ 01 марта 2010

У меня есть таблица с двумя столбцами идентификаторов.

TABLE
id1     id2
1       1
1       2
1       3
2       1
2       6
2       2
3       1
3       10
3       3

Я хотел бы ВЫБРАТЬ каждый идентификатор id1, который соответствует определенной комбинации идентификаторов id2.

Например, если у меня есть id2 = [1, 2, 3], я бы хотел вернуть id1 = [1];

Если у меня есть id2 = [1, 6], я бы хотел вернуть id1 = [2];

Если у меня есть id2 = [1], я бы хотел вернуть id1 = [1, 2, 3].

Буду признателен за любые предложения о том, как наилучшим образом добиться этого.

Спасибо

Ответы [ 2 ]

1 голос
/ 01 марта 2010

Вы можете искать соответствующие id2 и использовать count(distinct id2), чтобы убедиться, что все id2 совпадают. Количество должно быть равно числу id2. Для id2 = [1,2,3] счет должен быть 3:

select id1 
from YourTable
where id2 in (1,2,3)
group by id1
having count(distinct id2) = 3;

Это печатает 1. Для id2 = [1,6]:

select id1 
from YourTable
where id2 in (1,6)
group by id1
having count(distinct id2) = 2;

Это печатает 2. Для id2 = [1]:

select id1 
from YourTable
where id2 in (1)
group by id1
having count(distinct id2) = 1;

Это печатает 1, 2, 3.

0 голосов
/ 01 марта 2010

Попробуйте:

SELECT DISTINCT id1
AS found_id1
FROM table
WHERE id2 IN (1, 2, 3)

Вы получите:

DISTINCT id1
--------
1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...