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

4

这是我的查询:

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参数。

4
首先评估和执行最内层的查询,因此其值尚不为人知。这就像鸡和蛋的问题... - Déjà vu
2个回答

4
为什么要传递变量?直接使用外部表格引用就可以了,像这样。
SELECT user.*, 
(SELECT COUNT(*) AS c1 FROM user_group
WHERE user_group.uid=user.uid
GROUP BY user_group.uid) AS GroupCount
FROM user;

在'where clause'中未知的列'u.uid' - Antonio Magdić
我认为您正在寻找用户所在的组数。为此,我编辑了查询。请看一下。 - Ravindra Gullapalli

2

使用 JOIN 怎么样?我认为结果和您想要的一样。我猜测您想要获取用户所拥有的组的总数。对吗?

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

当我在GROUP BY类型,uid中查询时,会返回多行数据,而我想要计算它们的数量。 - Antonio Magdić
你能否提供一些包含期望结果的样本记录? - John Woo
uid 类型; 2 V; 3 V; 8 V; 9 V; 2 P; 3 P; 7 P; 8 P; 9 P - Antonio Magdić
那会有什么结果? - John Woo
你的问题似乎变得更加复杂了。你给我展示了一个例子,这很好,但你并没有真正告诉我你想要什么,你能否提供一些样本记录和期望的结果,就像这个问题https://dev59.com/lG3Xa4cB1Zd3GeqPkvYC#14651790上的那样,不用在意边框。 - John Woo
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接