【发布时间】:2014-01-29 09:35:55
【问题描述】:
我有一个groups、users 和users_groups 表。用户和组之间的关系是多对多的。可以将用户分配到多个组。我想运行一个查询,获取具有至少 1 个公共组到特定用户 ID 的用户列表。
如何重组此查询以使其更快?我认为这可能与使用 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);
【问题讨论】: