我有 4 个表,需要从数据库中获取用户信息、州名称、分支名称和子级总数。
我使用了下面的sql
SELECT `user_id` , `user_name` , state_name, branch_name
FROM `user`
LEFT JOIN state ON state_id = user_state_id
LEFT JOIN branch ON branch_id = user_branch_id
但是我还需要获取每个用户的 child 数量,所以我使用了下面的查询
SELECT `user_id` , `user_name` , state_name, branch_name, count(child_id)
FROM `user`
LEFT JOIN state ON state_id = user_state_id
LEFT JOIN branch ON branch_id = user_branch_id
LEFT JOIN child on parent_id = user_id group by user_id
我需要问一个问题,在整个查询中使用 group by 进行计数是否可以,这是否会影响来自该查询的联接的数据
最佳答案
您的 JOIN 涉及三个表。当您按 user_id 进行分组时,每个 user_id 只会输出一行。让我们看第一个表状态。如果用户只有一种状态,那么 GROUP BY 不会导致任何问题,因为这一行将出现在输出中。同样适用于分支机构。
对于最后一个表“子表”,如果用户有多个子表(显然根据您的查询),则输出中将只显示一行。由于您在“SELECT”中单独使用 count(child_id) ,因此该计数将单独出现在输出中。如果“子”表中的 SELECT 中有除“count”之外的任何其他列,则只有第一个子表中的值才会出现在输出中。
只要状态表和分支表中每个用户只有一行,输出就不会受到 GROUP BY 的影响。
关于php - Mysql查询获取总 child 数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45582471/