Как получить отличные идентификаторы из сводной таблицы MySQL в соответствии с несколькими значениями строки? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть таблица MySQL, подобная приведенной ниже, с именем attribute_master ,

enter image description here

Теперь я хочу получить все ref_id с f_name = "Sam" и l_name = "Border".

Как я могу сделать это с помощью запроса MySQL?

1 Ответ

2 голосов
/ 14 апреля 2020

Вы можете использовать агрегацию:

select ref_id
from mytable
where attr_name in ('f_name', 'l_name')
group by ref_id
having
    max(attr_name = 'f_name' and attr_value = 'Sam') = 1
    and max(attr_name = 'l_name' and attr_value = 'Border') = 1

Вот еще один способ express это (при условии отсутствия дубликатов (ref_id, attr_name)):

select ref_id
from mytable
where (attr_name, attr_value) in (('f_name', 'Sam'), ('l_name', 'Boder'))
group by ref_id
having count(*) = 2
...