@prukon
Начинающий разработчик

Как написать инверсию disting в mysql или как вывести не уникальные поля в mysqsl?

Имеем таблицу oc_product_option вида:

id   product_id	option_id
1	1			100
2	1			200
3	2			100
4	3			100
5	4			300
6	5			100
7	5			200
8	5			300


Хочу вывести все повторяющиеся значения по полю product_id, т.е. я хочу получить вот такой вид:

id   product_id	option_id
1	1			100
2	1			200
6	5			100
7	5			200
8	5			300


Все к чему я пришел, это вот к такому запросу:

SELECT *
FROM `oc_product_option`
GROUP BY `product_id`
HAVING count(oc_product_option.product_id)>1


и результат меня разумеется не удовлетворяет, потому я получаю следующий вывод:
id   product_id	option_id
1	1			100
6	5			100


По сути нужна инверсия disting по полю product_id. Прошу помощи знающих людей, как решить эту задачу.
  • Вопрос задан
  • 358 просмотров
Решения вопроса 1
0xD34F
@0xD34F
SELECT *
FROM oc_product_option
WHERE product_id IN (
  SELECT product_id
  FROM oc_product_option
  GROUP BY product_id
  HAVING count(product_id) > 1
)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@nozzy
Silex, Symfony, Laravel, SQL
select
t1.*
from
oc_product_option t1
inner join 
(
 select
 product_id
 from oc_product_option 
 group by product_id
 having count(*) > 1
) t2 on t2.product_id = t1.product_id
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы