以下是我希望实现的目标:
我有一张叫做“用户技能”的桌子。该表由“用户id”和“技能id”两个字段组成。我想从表中提取显示用户具有特定技能的所有行。
例如,我想从“用户技能”中提取具有技能id 110、120和130的所有用户。如果“用户技能”中的用户没有全部3个,我不希望他们出现在我的结果中。
我试过一个简单的AND(比如users_skills.skill_id=110和users_skills.skill_id=120和users_skills.skill_id=130),但没用。
我该怎么做?谢谢!

最佳答案

尝试使用自连接:

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

关于mysql - 如何从具有一个唯一字段和另一字段的特定值的表中提取所有行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19301885/

10-13 05:10