通过编写客户端服务器应用程序,通常会在他需要执行查询时根据哪个登录用户返回不同的记录。Sql Server:条件表达式的替代条件
我使用这种方法,但我不知道是否有替代品,你可以建议吗?
(我问的原因是,对于更多的complx查询,这变得相当难以理解,而有些CASE
声明会更好)。
declare @UserIsAdministrator bit;
declare @UserID integer;
set @UserIsAdministrator = 0 -- test value
set @UserID = 41; -- test value
SELECT * FROM employees
WHERE
(@UserIsAdministrator = 1) -- if user is admin return all records
OR
(
(@UserIsAdministrator = 0)
AND
(manager_ID = @UserID)
) -- if user is not admin return only "his" records
好了,你可以专门简化一个像:WHERE(@manager_ID = @userID或@UserIsAdministrator = 1)'...但如果它变得太c复杂的,我会与西门子的单独查询建议。您经常会发现,像这样的查询会逐渐从表中选择不同的值,具体取决于角色,并且很快您会发现,您确实试图编写两个查询,就好像它们是一个查询一样,这很难维护。 – 2011-05-19 08:48:54