想象一下以下的MySQL表环境:
管理员
id username
用户组
id groupName
adminXusergroup (交联表)
id adminId groupId
adminId 和 groupID 已建立索引和相应地配置外键关系( adminId 指向 admins.id 和 groupId 指向 usergroups.id )。
所有 id 字段都是主键。
我想从管理员中检索与用户组对应的特定用户的所有数据集。
我已经设法在PHP中执行此操作,首先从 adminXusergroup 获取相应的行,然后在第二次调用中创建可从管理员中选择的ID列表。但即使它有效,我觉得它可以进一步优化,可能是通过在一个MySQL查询中获取所有必需的信息(可能加入?)。
如何通过将信息合并到交联表中,从管理员中获取与用户组对应的所有数据集(基于ID) adminXusergroup ?
我目前的做法是这样的:
SELECT * FROM usergroups WHERE usergroups.id=(SELECT id FROM adminXusergroup WHERE adminId="1");
但它似乎不对,我不确定如何在这种情况下应用嵌套选择?
答案 0 :(得分:0)
我认为您可以使用IN
条件
SELECT *
FROM usergroups
WHERE usergroups.id IN
(
SELECT id
FROM adminXusergroup
WHERE adminId=1
);
否则您可以使用INNER JOIN
查询
SELECT *
FROM usergroups a
INNER JOIN adminXusergroup b
ON a.id = b.groupId
WHERE b.adminId = 1
答案 1 :(得分:0)
试试这个
SELECT a.id,u.*,x.* FROM admin as a
INNER JOIN usergroups as u on a.id=u.id
INNER JOIN adminXusergroup as x ON x.id=u.id WHERE u.id='userid'