情况就是这样:
我想在同一个查询中完成的是获取尚未填充的所有组。这意味着与该组相关联的 user_group(总计)少于组中的 people(group.people) 。
例如:id = 5且people = 6的组,有6个user_group,group_id = 5。所以我想要的查询,不会得到group.id = 5
这是我到目前为止所得到的:
SELECT `group`.*
FROM `group`
JOIN `user_group` ON `user_group`.`group_id` = `group`.`id`
WHERE `group`.`people` > ¿COUNT(total_user_gruop)?
我想创建一个子查询来获取每个组的user_groups总数,但我不知道如何实现这个目标,或者它是否可能......
谢谢大家!
答案 0 :(得分:1)
您需要GROUP BY
和HAVING
条款。
HAVING
在GROUP BY之后执行并计算,因此您需要与群组人员进行比较。
我在这里使用的只是因为我不知道你是否允许在用户组表中使用重复项;如果存在,我认为这样的副本不应该超过总数。
SELECT G.Group_ID, count(Distinct UG.User_ID)
FROM user_group UG
INNER JOIN `group` G
on UG.Group_ID = G.ID
GROUP BY G.Group_ID
HAVING count(Distinct UG.User_ID) < G.People
答案 1 :(得分:1)
检查此查询。
Select `group`.*, count(`user_group`.user_id) as current_users from `user_group`
inner join `group` on `group`.id = `user_group`.group_id
group by `user_group`.group_id
having count(`user_group`.user_id) < `group`.people
答案 2 :(得分:1)
希望这能解决你的问题。
SELECT *
FROM `group`
INNER JOIN `user_group` ON `group`.`id` = `user_group`.`group_id`
GROUP BY `user_group`.`group_id`
HAVING COUNT(`user_group`.`user_id`) < `group`.`people`