查询结果不正确

时间:2013-06-12 05:49:25

标签: mysql mysql-workbench

我的查询没有返回正确的结果:

 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,它会给我相同的结果。 请帮忙

1 个答案:

答案 0 :(得分: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 演示