如何从一个表中提取大量多行?

时间:2013-12-07 03:16:11

标签: php mysql database

这是我原来问题的扩展,位于此处: 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

2 个答案:

答案 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已编入索引