Mysql-无法将变量传递到子查询

Mysql-无法将变量传递到子查询,mysql,sql,subquery,Mysql,Sql,Subquery,我的问题是: SELECT user.*, @UserID:=user.uid, (SELECT count(c1) FROM ( SELECT COUNT(*) AS c1 FROM user_group WHERE user_group.uid=@UserID GROUP BY user_group.uid ) x1) AS x2 FROM user 问题是中的@UserID没有传递到子查询为什么要在那里传递变量?像这样直接使用外部表引用 SELECT

我的问题是:

SELECT user.*, @UserID:=user.uid,
    (SELECT count(c1) FROM (
    SELECT COUNT(*) AS c1 FROM user_group
    WHERE user_group.uid=@UserID
    GROUP BY user_group.uid
) x1) AS x2

FROM user 

问题是中的@UserID没有传递到子查询

为什么要在那里传递变量?像这样直接使用外部表引用

SELECT user.*, 
(SELECT COUNT(*) AS c1 FROM user_group
WHERE user_group.uid=user.uid
GROUP BY user_group.uid) AS GroupCount
FROM user;
使用JOIN怎么样?我想结果和你想要的一样。我猜您想要得到用户拥有的组的总数。对吧?


首先计算并执行最内部的查询。因此,其价值尚不清楚。鸡和蛋的问题…还有,当我按类型分组时,uid查询返回我想要计数的多行。你能给出具有所需结果的样本记录吗?uid类型;2伏;3伏;8伏;9伏;2p;3p;7p;8p;9 Pand结果是什么?根据示例,这可以简单地解决为SELECT uid,COUNT*totalCount FROM tableName GROUP BY uid。where子句中的未知列“u.uid”我想您正在查找用户所在的组数。为此,我编辑了查询。看一看
SELECT  a.*, 
        COALESCE(b.totalCount, 0) totalCount,
        COALESCE(b.totalType, 0) totalType
FROM    user a
        LEFT JOIN
        (
            SELECT  uid, 
                    COUNT(*) totalCount, 
                    COUNT(DISTINCT type) totalType
            FROM    user_Group 
            GROUP BY uid
        ) b ON a.uid = b.uid