mysql:两个表但只有三个选择标准

时间:2012-02-03 16:29:38

标签: mysql join

我有两个表:users和user_depts。让我们说(对于这个问题)用户只有一个'id'列,而user_depts有2:'uid'和'did'。

我正在寻找一条SQL行,它将返回所有部门的所有用户ID,这些部门使用给定的用户ID(比如7,虽然这将来自PHP动态)与之关联。

我尝试的是:

SELECT id FROM users, user_depts
WHERE users.id = user_depts.uid
AND user_depts.uid = 7

但当然这只会返回7.我想我可能必须加入表格,但我只知道加入的快捷语法,而且似乎不够。任何指针都将非常感谢!

3 个答案:

答案 0 :(得分:1)

使用EXISTS

SELECT uid FROM user_depts
WHERE EXISTS (
  SELECT * FROM user_depts a
  WHERE uid = 7 AND a.did = user_depts.did
)

答案 1 :(得分:0)

  

我正在寻找一条SQL行,它将返回所有用户ID   与给定用户ID相关的部门(比方说,7)   这将来自PHP的动态关联。

如果这意味着您要查找具有userid的所有用户:7已连接user_departent,则这是您的查询:

select users.id from users
inner join user_depts.uid = users.id
where users.id = 7

答案 2 :(得分:0)

从user_depts中选择uid                                 in(从user_depts中选择uid = 7)

  1. 首先使用子查询选择与用户关联的所有内容
  2. 然后选择所选部门的所有user_id。
  3. 这是你能做到的最好方法。 如果你想删除重复的结果,那么你可以使用不同的