想象一下下面的MySQL表环境:
管理员

id   username

用户组
id   groupName

adminXusergroup(交联表)
id   adminId   groupId

adminId和groupID被索引并相应地配置外键关系(adminId指向admins.id,groupID指向usergroups.id)。
所有id字段都是主键。
我想从与admins中的特定用户对应的用户组中检索所有数据集。
我在PHP中成功地做到了这一点,首先从adminXusergroup获取相应的行,然后创建一个id列表,以便在第二次调用中从admins中进行选择。但是,尽管它有效,我觉得它可以进一步优化,可能是通过在一个MySQL查询中获取所有必需的信息(可能是连接?).
如何通过将信息合并到交联表adminXusergroup中,从与admins中的特定数据集相对应的用户组中获取所有数据集(基于id)?
我目前的做法是这样开始的:
SELECT * FROM usergroups WHERE usergroups.id=(SELECT id FROM adminXusergroup WHERE adminId="1");

但这似乎不对,我不确定如何在这种情况下应用嵌套选择?

最佳答案

我认为您可以使用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

10-06 06:21