我有三个表 group
,user
和 belongs
其中 belongs
是 group< 之间的关系
和 user
。
Table group
group_id (pk)
group_name
Table user
user_id (pk)
user_name
Table belongs
user_id
group_id
我想显示指定组中的人也属于的随机组。
例如指定组是group_id = 1,当然我可以通过使用
"SELECT user_id FROM user u JOIN belongs b ON u.user_id = b.user_id and b.group_id = '1'"
我一直在尝试,现在我不知道如何选择这些人所在的组。
"SELECT g.* FROM group g WHERE ..."
提前致谢。
最佳答案
您可以使用额外的 join
获取所有组:
SELECT DISTINCT b2.group_id
FROM user u JOIN
belongs b
ON u.user_id = b.user_id and b.group_id = '1' JOIN
belongs b2
ON b2.user_id = b.user_id;
随机选择此类组的一种方法是使用 order by rand() limit 1
.您可能想添加 where b2.group_id <> '1'
.
假设你想统计group_id = 1
的成员在这些组中,您只需使用 group by
:
SELECT b2.group_id, count(distinct b2.user_id) as numusers
FROM user u JOIN
belongs b
ON u.user_id = b.user_id and b.group_id = '1' JOIN
belongs b2
ON b2.user_id = b.user_id
GROUP BY b2.group_id;
加入 user
是多余的,但我假设它可能用于原始问题中没有的其他一些条件。
关于php - Mysql select table 依赖另外两张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811760/