在MySQL中,我有一个充满属性的表,如下所示:
USER_ID | ATTR_NAME | ATTR_VALUE |
---|---|---|
1 | Name | Jess |
1 | Age | 23 |
1 | Sex | m |
2 | Name | Jess |
2 | Age | 23 |
3 | Name | Ann |
3 | Sex | f |
(请注意,并非每个用户的每个属性都必须存在)
我要查找一个或多个属性确实匹配的所有USER_ID
,例如:
显示名称为‘Jess’、年龄为‘23’的所有用户.
这应该返回:1, 2
我该如何在SQL中表达这一点?
编辑:当人们要求try 的时候,这是我的第一次try :
SELECT DISTINCT USER_ID
FROM ATTR_TABLE
WHERE
( ATTR_NAME = 'Name' AND ATTR_VALUE = 'Jess' ) AND
( ATTR_NAME = 'Age' AND ATTR_VALUE = '23' )
这肯定不会返回任何内容,因为没有一行有Attr_name Name
和Attr_name Age
...
这可能是基本的SQL,但是学习曲线是存在的,我无法提出一个工作解决方案,因为我还没有进入SQL行话,我甚至无法正确地谷歌可能的提示.