2013-06-12 121 views
0

我有沒有返回正確的結果的查詢:不正確的查詢結果

SELECT t.GroupName AS GroupName, t.ApplicationName AS ApplicationName, t.UserName 
     FROM UserApplication t 
     WHERE (@ApplicationName IS NULL OR @ApplicationName = '' OR t.ApplicationName = @ApplicationName) AND 
       (@UserName IS NULL OR @UserName = '' OR t.UserName= @UserName); 

表結構:

CREATE TABLE userapplication 
      (`ID` INT, 
      `ApplicationName` VARCHAR(100), 
      `GroupName` VARCHAR(100), 
      `UserName` VARCHAR(100)) 

當我不傳遞給參數的任何值,則它示出從所有行該表,而如果將任何值傳遞給參數@ApplicationName或@UserName它給我相同的結果。 請幫助

+0

第三行,在where clausal中輸入'@ ApplicationNamee'與雙'ee',看起來不正確! – stUrb

+0

對不起,錯誤的錯誤,我糾正 –

+1

請顯示你如何傳遞參數的值 – peterm

回答

1

如果你正確設置用戶變量的值的查詢會工作得很好

SET @ApplicationName = 'App 1'; 
SET @UserName = ''; 

SELECT t.GroupName, 
     t.ApplicationName, 
     t.UserName 
    FROM UserApplication t 
WHERE (COALESCE(@ApplicationName, '') = '' 
    OR t.ApplicationName = @ApplicationName) 
    AND (COALESCE(@UserName, '') = '' 
    OR t.UserName= @UserName); 

這是你查詢的多一點點的簡潔版

這裏是SQLFiddle演示

+0

感謝peterm它在查詢窗口上工作,但它不能在我的報表查詢窗口中以SET開頭。是否有任何解決方案可以通過單個SELECT語句完成... –