我在 MySql 中遇到子查询问题。我有一个包含用户组的表。列是 id、name 和带有描述每一行的注释的属性:(Id 是 INT,Name VARCHAR,所有其他 TINYINT(1)(即布尔值)
ID | Name | login | post | manage
1 user 1 0 0
2 poster 1 1 0
3 admin 1 1 1
我的目标是能够列出用户组属性(上面的登录、发布和管理)以及具有每个属性的用户组数量(分别为 3、2 和 1)。
此查询有效(但显然每次都计算登录列):
SELECT @colname:=cols.column_name,cols.column_comment,
(SELECT COUNT(*) FROM db.usergroups WHERE login=1) AS num_users
FROM information_schema.columns AS cols
WHERE TABLE_SCHEMA='db' AND TABLE_NAME='usergroups' AND column_type='tinyint(1)';
这不起作用(num_users 始终为 0)
SELECT @colname:=cols.column_name,cols.column_comment,
(SELECT COUNT(*) FROM db.usergroups WHERE cols.column_name=1) AS num_users
FROM information_schema.columns AS cols
WHERE TABLE_SCHEMA='db' AND TABLE_NAME='usergroups' AND column_type='tinyint(1)';
这两者都没有(num_users 始终为 0)
SELECT @colname:=cols.column_name,cols.column_comment,
(SELECT COUNT(*) FROM db.usergroups WHERE @colname=1) AS num_users
FROM information_schema.columns AS cols
WHERE TABLE_SCHEMA='db' AND TABLE_NAME='usergroups' AND column_type='tinyint(1)';
有什么办法可以让它工作吗?那就是-首先评估外部语句?
-
非常感谢您的帮助!
/胜利者