SELECT `groups`.`name`, `groups`.`id`
FROM `groups`
JOIN `group_members`
    ON (`group_members`.`user_id` = `groups`.`user_id`)
WHERE `groups`.`user_id` = '33'
ORDER BY `groups`.`id`


我需要获取他所属的每个组的组ID和组名称。但是结果不能重复!

我的查询返回很多重复的条目。

groups中存储确实存在的所有组(namedescription等)。在group_members中存储了属于某个组(user_idgroup_id等)的所有用户。

如何修改此查询以获得不重复但正确的结果?感谢您的建议!

编辑:

groups中没有user_id。该组的所有成员都存储在group_members表中。我需要获取用户是成员的所有组(组的ID和名称)。

最佳答案

如果要了解一个用户的所有组,则必须加入group_members.group_id并编辑WHERE子句。

SELECT `groups`.`name`, `groups`.`id`
FROM `groups`
JOIN `group_members`
    ON (`group_members`.`group_id` = `groups`.`id`)
WHERE `group_members`.`user_id` = '33'
ORDER BY `groups`.`id`

关于mysql - 使用SQL连接重复结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6787927/

10-15 18:54