我被困在最后2个小时试图弄清楚如何使这个查询或找到一个例子,直到现在没有搜索结果,所以我会在这里发布什么是我的问题。我有一组用户,并且我需要获取值的具体顺序。从select中选择case/if语句取决于条件
所以第1组是管理员,他可以看到所有的群体,对他的查询来获取值将
SELECT g1.group_id,g1.description FROM groups g1 ORDER BY g1.description
其他团体可以看到,除了管理员组的所有组(ID在这种情况下是1)其他用户的查询来获取值是:
SELECT g2.group_id,g2.description FROM groups g2 WHERE g2.group_id > 1 ORDER BY g2.description
我试着与CASE语句的东西,但是这是行不通的,我知道,子查询不能返回超过1行,我得到这样的错误
[Err] 1242 - Subquery returns more than 1 row
我查询到现在,错误之一:
SELECT
CASE WHEN (SELECT ug.group_id FROM users_groups ug
WHERE ug.login="admin" and ug.group_id = 1)
THEN (SELECT g1.group_id,g1.description FROM groups g1 ORDER BY g1.description)
ELSE (SELECT g2.group_id,g2.description FROM groups g2 WHERE g2.group_id > 1 ORDER BY g2.description)
END
所以我需要根据组登录的用户的结果,如果用户是管理员和他的团队= 1比他能看到所有群体,以其他方式除了组1之外的所有组,管理
任何帮助将不胜感激,最重要的是,我得到的价值在这个顺序,只有这两个g1.group_id,g1.description或g2.group_id,g2 .description
期望的输出将是:
对于用户管理员 -
group_id description
1 Administrator
2 Customer
3 Supplier
对于用户未管理员 -
group_id description
2 Customer
3 Supplier
如果您喜欢,请考虑遵循以下简单的两步操作步骤:1.如果您尚未这样做,请提供适当的DDL(和/或sqlfiddle),以便我们可以更轻松地复制问题。 2.如果您尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。 – Strawberry 2014-09-11 12:08:31
更新了问题 – enigmaticus 2014-09-11 12:11:18