Как выбрать из списка результатов для одного столбца, взяв второй столбец в качестве ссылки? - PullRequest
1 голос
/ 10 марта 2019

У меня есть таблица sku_attributes с этими данными

attribute_id    sku_id
1                   1
3                   1
10                  1
1                   2
4                   2
10                  2
1                   3
5                   3

Допустим, у меня есть набор результатов с тремя значениями

1, 3, 10

Я хочу запросить все данные, которые точно соответствуютнабор результатов в столбце attribute_id.Столбец sku_id должен иметь одинаковое значение для каждого результата.Ожидаемый результат должен быть таким:

attribute_id    sku_id
1                   1
3                   1
10                  1

Я пытался с оператором IN, но возвращает все, что совпадает с любыми данными из набора результатов

select * from sku_attributes sa
where sa.attribute_id in
    (1, 3, 10)

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Сгруппируйте по sku_id и возьмите только те группы, у которых нет attribute_id с, которые вы указали, и все те, которые вы хотите

select sku_id 
from sku_attributes
group by sku_id
having sum(attribute_id not in (1, 3, 10)) = 0
and sum(attribute_id = 1) > 0
and sum(attribute_id = 3) > 0
and sum(attribute_id = 10) > 0
0 голосов
/ 10 марта 2019

Если хотите, краткий метод для этого:

select sku_id 
from sku_attributes
group by sku_id
having group_concat(attribute_id order by attribute_id) = '1,3,10');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...