如何根据多个行值从类似MySQL的数据透视表中获取不同的ID?

问题描述 投票:0回答:1

我有一个如下所示的MySQL表,名为attribute_master

enter image description here

现在,我想获得所有具有f_name =“ Sam”和l_name =“ Border”的ref_id

如何使用MySQL查询来做到这一点?

mysql
1个回答
0
投票

您可以使用聚合:

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

这里是表达它的另一种方式(假设没有重复(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
© www.soinside.com 2019 - 2024. All rights reserved.