当管理员用户使用它时,与普通用户使用它时(在报告环境中)相比,我正在做一个行为不同的查询。
当管理员查看时,我希望报告在所有用户上运行。当普通用户使用它时,我希望查询只查看在当前用户下工作的用户。
我正在尝试制作 1 个报告,即 1 个查询,它结合了这两个方面。我的猜测是这样的:
SELECT * FROM datatable dt WHERE dt.user_id IN (
IF (currentUserAdmin = 1, (SELECT id FROM user), (SELECT id FROM user WHERE working_under = currentUserID))
)
(请想象currentUserAdmin
和currentUserID
是传递给包含报表查询的存储过程的参数,这datatable
实际上是一些真实的表)
问题是 mysql 说“子查询返回超过 1 行”。好吧,我想说这就是整个想法,因为我试图将它与IN
子句一起使用。
我该怎么做才能使这个查询工作?