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)';
これを機能させる方法はありますか?つまり、最初に外側のステートメントを評価するのですか?
-
助けてくれてありがとう!
/ビクター