大家好,我有个问题想了好几天不知道如何去做,来打扰下大家,烦请大家帮我想想办法:
我有一个记录权限的MYSQL表:
ID name AAA BBB CCC DDD
1 张三 true false true true
2 李四 false true true flase ……当我查询某一个人的时候,譬如张三,显示他所有权限为ture的列名,请问这个可不可以通过MYSQL直接实现?
我想了几天不知道如何去做,只好做了一个bean,直接填充进去.
但是感觉不是很好,谁能告诉我下如何通过SQL语句直接提取出来吗?
我有一个记录权限的MYSQL表:
ID name AAA BBB CCC DDD
1 张三 true false true true
2 李四 false true true flase ……当我查询某一个人的时候,譬如张三,显示他所有权限为ture的列名,请问这个可不可以通过MYSQL直接实现?
我想了几天不知道如何去做,只好做了一个bean,直接填充进去.
但是感觉不是很好,谁能告诉我下如何通过SQL语句直接提取出来吗?
(
select name,'AAA' as field_name,AAA as flag FROM TB_NAME
UNION ALL
select name,'BBB',BBB FROM TB_NAME
UNION ALL
select name,'CCC',CCC FROM TB_NAME
UNION ALL
select name,'DDD',DDD FROM TB_NAME
) a
where a.name='张三' and a.flag='ture'
group by a.name,a.field_name
+------+------+-------+-------+------+-------+
| ID | name | AAA | BBB | CCC | DDD |
+------+------+-------+-------+------+-------+
| 1 | 张三 | true | false | true | true |
| 2 | 李四 | false | true | true | flase |
+------+------+-------+-------+------+-------+
2 rows in set (0.00 sec)mysql> select a.name,a.field_name,a.flag from
-> (
-> select name,'AAA' as field_name,AAA as flag FROM tb_previleges
-> UNION ALL
-> select name,'BBB',BBB FROM tb_previleges
-> UNION ALL
-> select name,'CCC',CCC FROM tb_previleges
-> UNION ALL
-> select name,'DDD',DDD FROM tb_previleges
-> ) a;
+------+------------+-------+
| name | field_name | flag |
+------+------------+-------+
| 张三 | AAA | true |
| 李四 | AAA | false |
| 张三 | BBB | false |
| 李四 | BBB | true |
| 张三 | CCC | true |
| 李四 | CCC | true |
| 张三 | DDD | true |
| 李四 | DDD | flase |
+------+------------+-------+
8 rows in set (0.02 sec)mysql>
mysql> select a.name,a.field_name,a.flag from
-> (
-> select name,'AAA' as field_name,AAA as flag FROM tb_previleges
-> UNION ALL
-> select name,'BBB',BBB FROM tb_previleges
-> UNION ALL
-> select name,'CCC',CCC FROM tb_previleges
-> UNION ALL
-> select name,'DDD',DDD FROM tb_previleges
-> ) a
-> where a.name='张三' and a.flag='true'
-> group by a.name,a.field_name;
+------+------------+------+
| name | field_name | flag |
+------+------------+------+
| 张三 | AAA | true |
| 张三 | CCC | true |
| 张三 | DDD | true |
+------+------------+------+
3 rows in set (0.00 sec)mysql>