Как выбрать строки согласно множественному условию в sql
Есть такого рода таблица:
Необходимо оставить только те строки, в которых поле Man_reg принимает все значения от 1 до 3. Другими словами должны остаться только строчки, где Man_reg 'Moscow' в данном примере. Но нужен код, по которому можно выбирать все такие строки.
Ответы (3 шт):
Автор решения: Slava Rozhnev
→ Ссылка
Возможный вариант для MySQL:
SELECT Man_reg
FROM tbl
GROUP BY Man_reg
HAVING GROUP_CONCAT(DISTINCT Man_type ORDER BY Man_type ASC) = '1,2,3';
Автор решения: Akina
→ Ссылка
... или
SELECT Man_reg
FROM tbl
WHERE Man_type IN (1,2,3)
GROUP BY Man_reg
HAVING COUNT(DISTINCT Man_type) = 3;
Автор решения: 0xdb
→ Ссылка
Если лист значений заранее не известен, то поможет такой запрос:
select a.man_reg
from tbl a
join (
select distinct man_type, count (distinct man_type) over () total
from tbl) b on b.man_type = a.man_type
group by a.man_reg, total having count (*) = total
