nulldef
@nulldef
Senior Software Developer

Как сделать выборку по совпадению одного из полей?

Есть таблица table вида
id | field_a | field_b
Нужно сделать выборку по совпадению одного поля, и чтобы совпадений было больше одного.
Например
id | field_a | field_b
1  | cats   | 13
2  | cats   | 15
3  | cats   | 16
4  | dogs   | 15
5  | dogs   | 16
6  | birds  | 13
7  | birds  | 19
8  | birds  | 14

В результате должны получить
cats
dogs

Такой результат получается потому, что только у этих записей совпадают больше одной записи в поле field_b (15 и 16).
  • Вопрос задан
  • 3003 просмотра
Пригласить эксперта
Ответы на вопрос 3
@dmtrrr
Backend developer
SELECT b, count(a) from test group by b having count(a) > 1;
Ответ написан
SELECT t1.field_a FROM table t1
JOIN table t2 ON (t1.field_b=t2.field_b) AND (t1.id <> t2.id)
GROUP BY t1.field_a
HAVING COUNT(t2.field_b) > 1
Ответ написан
dzedzinskiy
@dzedzinskiy
Full stack developer
Select *
From
  (Select field_a
  From Table_1
  Where field_b in (Select field_b as bb
		From Table_1
		group by field_b
		Having count(field_a)>1)) as tmp
  Group By tmp.field_a
  Having count(field_a)>1

Результат исполнения:
field_a
cats
dogs
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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