这是我原来问题的扩展,位于此处: How do I pull all rows from a table with one unique field and specific values for another field?
我有一个包含两个字段的表:user_id和skill_id。
我想拉出所有具有特定数量的skill_id的行,但是我有大量的skill_id来搜索(~30)。我正在使用上面链接的问题中提出的自我加入建议,但有很多技能需要查找,该查询证明非常慢。
如何在不妨碍查询的情况下查找大量的skill_ids?
编辑:
这是我正在寻找的一个例子。使用下表,我想提取所有具有10和11和12等技能的用户行(除了我一次寻找更多30个技能)。
TABLE
user_id | skill_id
=====================
1 | 10
1 | 11
1 | 12
1 | 13
2 | 10
2 | 12
2 | 13
3 | 15
3 | 16
4 | 10
5 | 45
5 | 46
答案 0 :(得分:1)
如果我理解您的问题,以下查询可能会对您有所帮助。假设(user_id, skill_id)
是UNIQUE或PK。
SELECT user_id
FROM tab
WHERE skill_id IN (30 entries)
GROUP BY user_id
HAVING SUM(skill_id IN (30 entries)) = 30;
你可以在这里测试。 http://www.sqlfiddle.com/#!2/f73dfe/1/0
答案 1 :(得分:0)
select user_id
from table
where skill_id IN (10,11,12...)
确保skill_is已编入索引