Palych_tw
@Palych_tw
Типа веб-разработчик

Как написать запрос для поиска совпадений в одной таблице?

Всем привет. Есть таблица :
thing_id user_id
Нужно выбрать thing_id, которая принадлежит двум юзерам. Т.е. есть два user_id, и нужно найти thing_id, которая соответствует сразу двум user_id.
  • Вопрос задан
  • 320 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
select user_id, thing_id, count(*) as cnt
  from tbl
  where user_id in (1, 2)
  group by thing_id

осталось отсеять те, где счетчик не равен двум.
having cnt = 2
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
qonand
@qonand
Software Engineer
SELECT 
    think_id, 
    count(*) as cnt 
FROM 
    tablename 
GROUP BY 
    think_id 
HAVING 
    cnt > 1
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для уникальных пар (user_id, thing_id) - через GROUP BY и HAVING, для неуникальных:
SELECT `t1`.`think_id`, `t1`.`user_id`, `t2`.`user_id`
  FROM `table` AS `t1`
  JOIN `table` AS `t2` ON `t1`.`user_id` = :user1 AND `t2`.`user_id` = :user2
    AND `t2`.`think_id` = `t1`.`think_id`
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы