2013-10-10 67 views
1

以下是我期待实现的内容:如何从一个唯一字段和另一个字段的特定值中提取表中的所有行?

我有一个名为“users_skills”的表。该表由两个字段“user_id”和“skill_id”组成。我想从表格中取出显示用户具有特定技能的所有行。

例如,我想从“users_skills”中获得skill_id为110,120和130的所有用户。如果“users_skills”中的用户不具有全部3个,我不希望他们出现在我的结果中。

我试过一个简单的AND(像users_skills.skill_id = 110 AND users_skills.skill_id = 120 AND users_skills.skill_id = 130),但没有奏效。

我该如何做到这一点?谢谢!

回答

1

尝试使用自联接:

SELECT us1.* FROM users_skills us1 
    JOIN users_skills us2 ON us1.user_id = us2.user_id 
    JOIN users_skills us3 ON us1.user_id = us3.user_id 
    WHERE us1.skill_id = 110 AND us2.skill_id = 120 AND us3.skill_id = 130 

我假设你真的想从表中usersskills的数据,在这种情况下,你可以使用

SELECT users.*, skills.* FROM users 
    JOIN users_skills us1 ON users.id = user_id 
    JOIN users_skills us2 ON users.id = us2.user_id 
    JOIN users_skills us3 ON users.id = us3.user_id 
    JOIN skills ON skills.id = us1.skill_id OR skills.id = us2.skill_id OR skills.id = us3.skill_id 
    WHERE us1.skill_id = 110 AND us2.skill_id = 120 AND us3.skill_id = 130 
+0

伟大的作品,谢谢! –

相关问题