2
我有一个groups
,users
和users_groups
表。用户和组之间的关系是多方面的。用户可以分配到多个组。我想运行一个查询,获取具有至少一个公共组的特定用户ID的用户列表。更高效的SQL查询构造
如何重构此查询以使其更快?我认为这可能与使用GROUP BY有关?
我该如何实现排序,使拥有更多通用组的用户先出现?
$user_id = $this->db->escape($user_id); $sql = "SELECT DISTINCT(ug_user_id) FROM users_groups INNER JOIN groups ON groups.group_id = users_groups.ug_group_id WHERE ug_group_id IN ( SELECT ug_group_id FROM users_groups WHERE ug_user_id = $user_id) LIMIT 50"; $query = $this->db->query($sql);
嗨,感谢您的回答,但由于WHERE子句将结果限制为该特定用户标识,因此不起作用。我想要一个与该用户标识具有共同组的用户列表;) – emkay
完成了,我认为这可以工作。 – Melon
谢谢,会做一些测试,并让你知道:) – emkay