我有以下查询:
SELECT DISTINCT * FROM group_members
INNER JOIN groups ON groups.group_id = group_members.group_id
WHERE group_members.user_id = *1* OR groups.created_by = *1*
然而,当它执行时,我得到以下结果:
Test - user 1
Test - user 2
但我想要
Test - user 1, user 2
我似乎无法理解如何修改我的查询来生成它。有人会有想法吗?
本质上,我试图查询用户创建或属于的所有组
群组架构:
Group_Members Schema
答案 0 :(得分:0)
这些行是截然不同的 - 所以DISTINCT正在做它的工作;它确保没有重复的行 - 这意味着如果您选择多个列,则确保没有重复的组合。它并不能确保紧跟其后的字段没有重复值,因为我认为您正在期待。
我想您可能希望将GROUP BY与GROUP_CONCAT一起使用?
https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat
我不清楚你要选择哪些字段 - 但是类似于:
尝试:
SELECT *, GROUP_CONCAT(user_id)
FROM FROM group_members
INNER JOIN groups ON groups.group_id = group_members.group_id
WHERE group_members.user_id = *1* OR groups.created_by = *1*
GROUP BY group_id