通過編寫客戶端服務器應用程序,通常會在他需要執行查詢時根據哪個登錄用戶返回不同的記錄。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