| 发表于:2007-06-29 10:54:04 楼主 |
用户表user,froleid是外键和角色表关联,即一个用户可以有多个角色 fuserid froleid ----------- ----------- 1 1 1 2 1 3 2 1 2 2 3 3 4 3 角色表 froleid fname ----------- -------------------- 1 系统管理员 2 vip用户 3 用户 现在的问题是,如何得到roleid不是1的用户 结果应该是: fuserid froleid ----------- ----------- 3 3 4 3 现在我的实现是: declare @user table(fuserid int, froleid int) insert @user values(1,1) insert @user values(1,2) insert @user values(1,3) insert @user values(2,1) insert @user values(2,2) insert @user values(3,3) insert @user values(4,3) declare @role table( froleid int,fname varchar(20)) insert @role values(1, '系统管理员 ') insert @role values(2, 'vip用户 ') insert @role values(3, '用户 ') select * from @user where fuserid not in( select fuserid from @user a inner join @role b on a.froleid=b.froleid where b.froleid=1) 但是我觉得这样的做法有点笨啊,多嵌入了一层子查询,能不能不嵌入子查询? 请大家帮我改改…… |
|
|
|
|