我有一个如下所示的MySQL表,名为attribute_master,
现在,我想获得所有具有f_name =“ Sam”和l_name =“ Border”的ref_id。
如何使用MySQL查询来做到这一点?
您可以使用聚合:
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